post icon

Funciones útiles con fechas y horas en SQL Server

Crear un sólo post por cada función útil que podemos tener sobre tipos de datos datetime, date, time, y otros semejantes en SQL Server terminaría en un sin fin de artículos, así que he considerado agrupar varias funciones comunes y casi cotidianas para operar con éstos tipos de datos.

Hay que tener en cuenta que pondré funciones que podrían sólo funcionar desde la versión 2008 en adelante, aunque la mayoría lo hará con versiones anteriores.

En varias partes utilizaremos partes de fechas, las cuales especificaré solamente al inicio del post.

Parte de la fecha Abreviaturas Significado
year yy, yyyy Año
quarter qq, q Cuatrimestre
month mm, m Mes
dayofyear dy, y Día del Mes
day dd, d Día
week wk, ww Semana
weekday dw Día de la Semana
hour hh Hora
minute mi, n Minuto
second ss, s Segundo
millisecond ms Milisegundo

Obtener fecha y hora del sistema

Sintaxis: GETDATE()

SELECT GETDATE();

El equivalente ANSI SQL es CURRENT_TIMESTAMP

SELECT CURRENT_TIMESTAMP;

Obtener fecha y hora con UTC del sistema

Sintaxis: GETUTCDATE()

SELECT GETUTCDATE();

Sumar Fechas

Sintaxis: DATEADD(parte de fecha, numero, fecha)

-- SUMA 45 MINUTOS A LA FECHA Y HORA ACTUAL
SELECT DATEADD(minute, 45, GETDATE());

Diferencias entre Fechas

Sintaxis: DATEDIFF(parte de fecha, fecha inicial, fecha final)

-- RETORNA LA DIFERENCIA EN DIAS DESDE EL 03 DE MAYO DEL 84 HASTA LA FECHA
SELECT DATEDIFF(day, '03/05/1984', GETDATE());

Parte de la fecha en formato de cadena de texto

Sintaxis: DATENAME(parte de fecha, fecha)

-- RETORNA EL DIA DE LA SEMANA DE LA FECHA ACTUAL, EJEMPLO: DOMINGO, LUNES, MARTES, ETC.
SELECT DATENAME(dw, GETDATE());

OBTENER EL DÍA DE UNA FECHA

Sintaxis: DAY(fecha)

-- RETORNA EL DÍA DE UNA FECHA
SELECT DAY(GETDATE());

OBTENER EL MES DE UNA FECHA

Sintaxis: MONTH(fecha)

-- RETORNA EL MES DE UNA FECHA
SELECT MONTH(GETDATE());

OBTENER EL AÑO DE UNA FECHA

Sintaxis: YEAR(fecha)

-- RETORNA EL AÑO DE UNA FECHA
SELECT YEAR(GETDATE());

OBTENER UNA PARTE DE UNA FECHA

Sintaxis: DATEPART(parte de fecha, fecha)

-- RETORNA EL AÑO DE UNA FECHA
SELECT DATEPART(year, GETDATE());

Comentarios desde Facebook:

  1. avatar
    Guillermo MEXICO Google Chrome Windows
    4 octubre 2013 at 12:06 #

    Amigo me puedes ayudar con este procedimiento de almacenado?

    CREATE PROCEDURE [dbo].[insertComputadoras]
    @CVE_PC as int,
    @CVE_OS as int,
    @CVE_MARCA as int,
    @CVE_ANTI as int,
    @MODELO as varchar(30),
    @SERIAL_NO as varchar(30),
    @RAM as varchar(10),
    @HDD as varchar(10),
    @NOMBRE_PC as varchar(30),
    @CARGADOR as int,
    @CVE_PERSONA as int,
    @MANTENIMIENTO as datetime,
    @PROX_MANTENIMIENTO as datetime,
    @FECHA_MODIFICACION as datetime,
    @OBSERVACIONES as varchar(120),
    @ACTIVO as int
    AS
    BEGIN
    INSERT INTO COMPUTADORAS
    VALUES
    (@CVE_PC, @CVE_OS, @CVE_MARCA, @CVE_ANTI, @MODELO, @SERIAL_NO, @RAM, @HDD, @NOMBRE_PC,
    @CARGADOR, @CVE_PERSONA, @MANTENIMIENTO, @PROX_MANTENIMIENTO = CAST(@MANTENIMIENTO AS DATETIME)+30,
    @FECHA_MODIFICACION = getdate(), @OBSERVACIONES, @ACTIVO;
    END

    El error esta en el value @PROX_MANTENIMIENTO = CAST(@MANTENIMIENTO AS DATETIME)+30 lo intente hacer así también y me da el mismo error

    @PROX_MANTENIMIENTO = dateadd(month, ‘1’, @MANTENIMIENTO)

Responder