Comparar fechas

Victor
21 de Junio del 2005
Hola.

Quiero comparar en una query dos fechas sin tener en cuenta la hora.

¿Como puedo hacer esto?

Gracias por anticipado.

emiliomiguez
21 de Junio del 2005
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