Comercial
SQL Server 2012
Otras versiones
Personas que lo han encontrado útil: 12 de 14 - Valorar este tema
Devuelve el recuento (entero con firma) de los límites datepart que se han cruzado entre los valores startdate y enddate especificados.
Para obtener una introducción de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Tipos de datos yfunciones de fecha y hora (Transact-SQL).
Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL
Sintaxis
DATEDIFF ( datepart , startdate , enddate )
Argumentos
datepart
Es la parte de startdate y enddate que especifica el tipo de límite cruzado. En la siguiente tabla se enumeran los argumentos válidos de datepart. Los equivalentes de variables definidas por el usuario noson válidos.
datepart
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
msmicrosecond
mcs
nanosecond
ns
startdate
Es una expresión que se puede resolver como un valor time, date, smalldatetime, datetime, datetime2 o datetimeoffset. date puede ser una expresión, una expresión de columna, una variable definida por el usuario o un literal de cadena. startdate se resta de enddate.
Para evitar ambigüedades, use años de cuatrodígitos. Parta obtener información sobre los años de dos dígitos, vea Establecer la opción de configuración del servidor Fecha límite de año de dos dígitos.
enddate
Vea startdate.
Tipo devuelto
int
Valor devuelto
Cada datepart y sus abreviaturas devuelven el mismo valor.
Si el valor devuelto está fuera del intervalo para int (de -2.147.483.648 a +2.147.483.647), se devuelveun error. Para millisecond, la diferencia máxima entre startdate y enddate es de 24 días, 20 horas, 31 minutos y 23.647 segundos. Para second, la diferencia máxima es de 68 años.
Si startdate y enddate tienen asignado solo un valor de tiempo y datepart no es un datepart de tiempo, se devuelve 0.
Un componente de ajuste de zona horaria de startdate o endate no se utiliza para calcular el valordevuelto.
Puesto que smalldatetime solo es preciso hasta los minutos, cuando se use un valor smalldatetime para startdate o enddate, los segundos y milisegundos siempre se establecen en 0 en el valor devuelto.
Si solo se asigna un valor de tiempo a una variable de un tipo de datos de fecha, el valor de la parte de la fecha que falta se establece en el valor predeterminado: 1900-01-01. Sisolo se asigna un valor de fecha a una variable de un tipo de datos de fecha u hora, el valor de la parte de la hora que falta se establece en el valor predeterminado: 00:00:00. Si startdate o enddate tienen solo una parte de hora y el otro solo una parte de la fecha, las partes de la hora que y la fecha que faltan se establecen en los valores predeterminados.
Si startdate y enddate son de tiposde datos de fecha diferentes y uno tiene más partes de hora o precisión de fracciones de segundo que el otro, las partes que faltan del otro se establecen en 0.
Límites de datepart
Las siguientes instrucciones tienen el mismo valor startdate y el mismo valor endate. Esas fechas son adyacentes y difieren y tienen una diferencia horaria de 0,0000001 segundos. La diferencia entre startdate yendate en cada instrucción cruza un límite de calendario u hora de su datepart. Cada instrucción devuelve 1. Si se utilizan años diferentes en este ejemplo y si tanto startdate como endate están en la misma semana del calendario, el valor devuelto para week será 0.
SELECT DATEDIFF(year, '2005-12-31 23:59:59.9999999'
, '2006-01-01 00:00:00.0000000');
SELECT DATEDIFF(quarter, '2005-12-31...
Regístrate para leer el documento completo.