Comparar fechas
Hola.
Quiero comparar en una query dos fechas sin tener en cuenta la hora.
¿Como puedo hacer esto?
Gracias por anticipado.
Quiero comparar en una query dos fechas sin tener en cuenta la hora.
¿Como puedo hacer esto?
Gracias por anticipado.
Utiliza la siguiente función. Si no quieres utilizar ningún carácter de la hora: no lo pongas en el parámetro datepart.
DATEDIFF
Devuelve el número de lÃmites de fecha y hora que hay entre dos fechas especificadas.
Sintaxis
DATEDIFF ( datepart , startdate , enddate )
Argumentos
datepart
Es el parámetro que indica en qué parte de la fecha se calcula la diferencia. La tabla enumera las partes de las fechas y abreviaturas reconocidas por Microsoft® SQL Server™.
Parte de la fecha Abreviaturas:
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
Es la fecha de comienzo para el cálculo. startdate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Puesto que smalldatetime es exacto únicamente en el minuto, cuando se utiliza un valor smalldatetime los segundos y milisegundos son siempre 0.
Si especifica solamente los dos últimos dÃgitos del año, los valores menores o iguales que los dos últimos dÃgitos del valor de la opción de configuración two digit year cutoff (reducción del año a dos dÃgitos) pertenecen al mismo siglo que el año lÃmite. Los valores mayores que los dos últimos dÃgitos del valor de esta opción pertenecen al siglo anterior al año lÃmite. Por ejemplo, si two digit year cutoff es 2049 (valor predeterminado), 49 se interpreta como 2049 y 50 se interpreta como 1950. Para evitar ambigüedades, utilice años de cuatro dÃgitos.
Para obtener más información acerca de cómo especificar valores de hora, consulte Formatos de hora. Para obtener más información acerca de especificar fechas, consulte datetime y smalldatetime.
enddate
Es la fecha final para el cálculo. enddate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Tipos devueltos
integer
Observaciones
startdate se resta de enddate. Si startdate es posterior a enddate, se devuelve un valor negativo.
DATEDIFF produce un error si el resultado está fuera del intervalo de valores enteros. Para los milisegundos, el número máximo es de 24 dÃas, 20 horas, 31 minutos y 23,647 segundos. Para los segundos, el número máximo es 68 años.
El método para contar los lÃmites que hay, tales como minutos, segundos, y milisegundos, hace que el resultado dado por DATEDIFF sea coherente en todos los tipos de datos. El resultado es un valor entero con signo igual al número de lÃmites datepart que hay entre la primera y la segunda fecha. Por ejemplo, el número de semanas que hay entre el domingo 4 de enero y el sábado 11 de enero es 1.
Ejemplos
En este ejemplo se determina la diferencia en dÃas entre la fecha actual y la fecha de publicación de los tÃtulos de la base de datos pubs.
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
DATEDIFF
Devuelve el número de lÃmites de fecha y hora que hay entre dos fechas especificadas.
Sintaxis
DATEDIFF ( datepart , startdate , enddate )
Argumentos
datepart
Es el parámetro que indica en qué parte de la fecha se calcula la diferencia. La tabla enumera las partes de las fechas y abreviaturas reconocidas por Microsoft® SQL Server™.
Parte de la fecha Abreviaturas:
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
Es la fecha de comienzo para el cálculo. startdate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Puesto que smalldatetime es exacto únicamente en el minuto, cuando se utiliza un valor smalldatetime los segundos y milisegundos son siempre 0.
Si especifica solamente los dos últimos dÃgitos del año, los valores menores o iguales que los dos últimos dÃgitos del valor de la opción de configuración two digit year cutoff (reducción del año a dos dÃgitos) pertenecen al mismo siglo que el año lÃmite. Los valores mayores que los dos últimos dÃgitos del valor de esta opción pertenecen al siglo anterior al año lÃmite. Por ejemplo, si two digit year cutoff es 2049 (valor predeterminado), 49 se interpreta como 2049 y 50 se interpreta como 1950. Para evitar ambigüedades, utilice años de cuatro dÃgitos.
Para obtener más información acerca de cómo especificar valores de hora, consulte Formatos de hora. Para obtener más información acerca de especificar fechas, consulte datetime y smalldatetime.
enddate
Es la fecha final para el cálculo. enddate es una expresión que devuelve un valor datetime o smalldatetime, o una cadena de caracteres con formato de fecha.
Tipos devueltos
integer
Observaciones
startdate se resta de enddate. Si startdate es posterior a enddate, se devuelve un valor negativo.
DATEDIFF produce un error si el resultado está fuera del intervalo de valores enteros. Para los milisegundos, el número máximo es de 24 dÃas, 20 horas, 31 minutos y 23,647 segundos. Para los segundos, el número máximo es 68 años.
El método para contar los lÃmites que hay, tales como minutos, segundos, y milisegundos, hace que el resultado dado por DATEDIFF sea coherente en todos los tipos de datos. El resultado es un valor entero con signo igual al número de lÃmites datepart que hay entre la primera y la segunda fecha. Por ejemplo, el número de semanas que hay entre el domingo 4 de enero y el sábado 11 de enero es 1.
Ejemplos
En este ejemplo se determina la diferencia en dÃas entre la fecha actual y la fecha de publicación de los tÃtulos de la base de datos pubs.
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
