Sei sulla pagina 1di 6

Suma y Resta de Fechas [SQL Server]

Existen ocasiones en las que es necesario Sumar y Restar fechas, as como buscar la diferencia que existe entre una fecha y otra, refiriendonos a un rango. En este artculo mostraremos como hacer esto utilizando Microsoft SQL Server.

DATEADD: Es la funcin utilizada para la Suma y Resta de fechas en SQL Server DATEDIFF: Es la funcin utilizada para obtener el intervalo de tiempo entre dos fechas.

EJEMPLOS CON: DATEADD


Sintaxis: DATEADD (<parmetro>, <cantidad a sumar>, <fecha a la cual se le sumara>)
Lista de posibles parmetros:
Parmetro Descripcin

dd

Das

mm o m

Mes

yy o yyyy

Ao

wk

Semana

hh

Horas

mi

Minutos

ss

Segundos

La cantidad a sumar trabaja en base al parmetro indicado. La fecha debe estar en un formato correcto utilizado por SQL para almacenamiento de fechas. En nuestros ejemplos utilizaremos el siguiente: 2010-01-26

Ejemplos : Sumar 1 mes a la fecha indicada. En nuestro ejemplo utilizaremos el parmetro: MM - Mes
SELECTDATEADD(MM, 1,'2010-01-26')AS [FECHA]

Resultado:

Podemos notar que se sumo un mes a la fecha indicada. Si queremos obtener la fecha en formato DD/MM/AAAA , solo tenemos que transformar nuestro cdigo y obtendremos un resultado ms familiar. Lo hacemos de la manera siguiente: **Para ver informacin acerca de formatos de fechas favor ver artculo [ Formatos de Fecha [SQL Server] ]
SELECT CONVERT(varchar(10),(SELECT DATEADD(MM, 1,'2010-01-26')), 103) AS [Fecha]

Resultado:

Cabe destacar que utilizando DATEADD podemos trabajar inverso en sentido de Restar en lugar de Sumar, simplemente tenemos que poner con signo negativo la cantidad y obtendremos el resultado restado. Ejemplo: Restamos 10 das a la fecha indicada. Para este ejemplo utilizaremos el parmetro: DD - Da
SELECT DATEADD(DD,-10,'2010-01-26') AS [FECHA RESTADA]

Resultado:

Le damos formato:
SELECTCONVERT(varchar(10),(SELECTDATEADD(DD,-10,'2010-01-26')), 103)AS [FECHA RESTADA]

Resultado:

DATEDIFF
Sintaxis: DATEDIFF(<parmetro>, <primera fecha>, <segunda fecha>)
Los parmetros indican qu queremos obtener como resultado de la diferencia entre 2 fechas (das, semanas, meses, etc), los mismos son indicados en la siguiente tabla:
Parmetro Descripcin

dd

Das

mm o m

Mes

yy o yyyy

Ao

wk

Semana

hh

Horas

mi

Minutos

ss

Segundos

Nota: El resultado se obtendr de la siguiente operacin: segunda fecha - primera fecha La fecha debe estar en un formato correcto utilizado por SQL para almacenamiento de fechas. En nuestros ejemplos utilizaremos el siguiente: 2010-01-26

Ejemplos:

1. Buscamos la diferencia de das existente entre dos fechas. En este ejemplo utilizaremos el parmetro: DAY - DIA
SELECT DATEDIFF(DAY, 2010-01-26, 2010-01-20) AS [DIFERENCIA DIAS]

Resultado:

2. Buscamos la diferencia de meses que existe entre dos fechas. En este ejemplo utilizaremos el parmetro: M - MES
SELECT DATEDIFF(MM,'2010-02-01','2010-04-01') AS [MESES RESTANTES]

Resultado:

Conversin de Fechas
Quizs muchos han tenido el inconveniente de que tienen fechas en formatos que no van acorde con el reporte que tenemos que generar o quizs muchos se han preguntado cmo se podra alterar el formato que trae una fecha cuando grabamos en SQL Server con el tipo de dato date, por esta razn publicamos esta informacin que podra ser de mucha utilidad para la generacin de reportes con formatos reconocidos y ms legibles. Aqu mostramos una tabla que contiene los formatos en que podemos converti una fecha utilizando la funcin CONVERT: Cdigo 100 (1, 2) 101 102 103 104 105 Formato mesddaaaahh:mia.m. (o p. m.) mm/dd/aaaa aa.mm.dd dd/mm/aaaa dd.mm.aa dd-mm-aa

106 (1) 107 (1) 108 9 109 (1, 2) 110 111 112 13 113 (1, 2) 114 20 120 (2) 21 121 (2) 126 (4) 127 (6, 7) 130 (1, 2) 131

dd mes aa Mes dd, aa hh:mi:ss mesddaaaahh:mi:ss:mmma.m. (o p. m.) mm-dd-aa aa/mm/dd aammdd aaaammdd dd mes aaaahh:mi:ss:mmm(24h) hh:mi:ss:mmm(24h) aaaa-mm-ddhh:mi:ss(24h) aaaa-mm-ddhh:mi:ss.mmm(24h) aaaa-mm-ddThh:mi:ss.mmm (sin espacios) aaaa-mm-ddThh:mi:ss.mmmZ dd mes aaaahh:mi:ss:mmma.m. N/A

Como podemos visualiza existen muchos formatos disponibles para fechas, pero explicaremos como podemos aplicar cada uno de ellos para obtener el formato deseado en nuestros reportes y/o consultas.

EJJEMPLOS:
Varios usos que podramos dar con una simple consulta en fecha GETDATE()
SELECT CONVERT(VARCHAR (30),GETDATE(), 103) FECHA_FORMATO_103; SELECT CONVERT(VARCHAR (30),GETDATE(), 105) FECHA_FORMATO_105; SELECT CONVERT(VARCHAR (30),GETDATE(), 106) FECHA_FORMATO_106; SELECT CONVERT(VARCHAR (100),GETDATE(), 107) FECHA_FORMATO_107; SELECT CONVERT(VARCHAR (30),GETDATE(), 110) FECHA_FORMATO_110; SELECT CONVERT(VARCHAR (30),GETDATE(), 111) FECHA_FORMATO_111;

RESULTADO:

En este la imagen del RESULTADO 1.1 podemos visualizar lo consultado anteriormente, donde cada fecha tiene su respectivo formato como indica la tabla.

RESULTADO 1.1 OTRAS FORMAS:


Podemos variar en la forma de obtener el dato que queremos convertir, entonces para esto haremos unas prcticas utilizando datos de fechas que estan ubicados en una tabla y a partir de este haremos las conversiones requeridas. QUERY: SELECT CONVERT(VARCHAR (10),<campo>, 103) FROM <tabla> En un ejemplo realizado recibimos el dato mostrado en la imagen RESULTADO 1.2 Query hecho: SELECTCONVERT(VARCHAR (10),(fecha), 103)FECHA_FORMATO_103 FROMdocumentosVentaR

RESULTADO 1.2

Potrebbero piacerti anche