Devuelve un tipo de datos Variant (Long) que especifica el número de intervalos de tiempo entre dos fechas.
Sintaxis
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
La DateDiff función tiene estos argumentos:
| argumento | Descripción |
|---|---|
interval |
Obligatorio. Expresión de cadena que es el intervalo de tiempo que se usa para calcular la diferencia entre date1 y date2. |
date1, date2 |
Obligatorio. Variant (Date). Dos fechas que desea usar en el cálculo. |
firstdayofweek |
Opcional. Constante que especifica el primer día de la semana. Si no lo especifica, se supone que es domingo. |
firstweekofyear |
Opcional. Constante que especifica la primera semana del año. Si no lo especifica, la primera semana es la semana en la que se produce el 1 de enero. |
Configuración
El interval argumento tiene esta configuración:
| Configuración | Descripción |
|---|---|
yyyy |
Año |
q |
Trimestre |
m |
Mes |
y |
Día del año |
d |
Día |
w |
Weekday |
ww |
Semana |
h |
Hora |
n |
Minuto |
s |
Segundo |
El firstdayofweek argumento tiene esta configuración:
| Constante | Valor | Descripción |
|---|---|---|
vbUseSystem |
0 | Usa la configuración de la API NLS. |
vbSunday |
1 | Domingo (predeterminado) |
vbMonday |
2 | Lunes |
vbTuesday |
3 | Martes |
vbWednesday |
4 | Miércoles |
vbThursday |
5 | Jueves |
vbFriday |
6 | Viernes |
vbSaturday |
7 | Sábado |
| Constante | Valor | Descripción |
|---|---|---|
vbUseSystem |
0 | Usa la configuración de la API NLS. |
vbFirstJan1 |
1 | Comienza con la semana en la que se produce el 1 de enero (predeterminado). |
vbFirstFourDays |
2 | Comienza con la primera semana que tiene al menos cuatro días en el año nuevo. |
vbFirstFullWeek |
3 | Comienza con la primera semana completa del año. |
Observaciones
Puede usar la DateDiff función para determinar cuántos intervalos de tiempo especificados existen entre dos fechas. Por ejemplo, puede usar DateDiff para calcular el número de días entre dos fechas o el número de semanas entre hoy y el final del año.
Para calcular el número de días entre date1 y date2, puede usar Día del año ("y") o Día ("d"). Cuando interval es Weekday ("w"), DateDiff devuelve el número de semanas entre las dos fechas. Si date1 cae un lunes, DateDiff cuenta el número de lunes hasta date2. Cuenta date2 , pero no date1. Sin embargo, si interval es Semana ("ww"), la DateDiff función devuelve el número de semanas del calendario entre las dos fechas. Cuenta el número de domingos entre date1 y date2.
DateDiff cuenta date2 si cae en un domingo, pero no cuenta date1, incluso si cae en un domingo.
Si date1 se refiere a un punto posterior en el tiempo que date2, la DateDiff función devuelve un número negativo.
El firstdayofweek argumento afecta a los cálculos que usan los "w" símbolos de intervalo y "ww" .
Si date1 es un date2 literal de fecha, el año especificado se convierte en una parte permanente de esa fecha. Sin embargo, si date1 está entre comillas dobles (" ") y date2 omite el año, el año actual se inserta en el código cada vez que se evalúa la date1 expresión odate2. Esto hace posible escribir código que se puede usar en diferentes años.
Si compara el 31 de diciembre con el 1 de enero del año siguiente, DateDiff para Año ("yyyy") devuelve 1 aunque solo haya pasado un día.
Nota
Para date1 y date2, si el valor de la Calendar propiedad es gregoriano, la fecha suministrada debe ser gregoriana. Si el calendario es Hijri, la fecha suministrada debe ser Hijri.
Ejemplos de consulta DateDiff
| Expresión | Resultados |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Devuelve la diferencia, en años, entre la fecha 01/01/2010 y los valores del DateofSale campo. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en trimestres según el año natural, entre la fecha del sistema y DateofSale, y la muestra en la DaysSinceSale columna. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en días, entre la fecha del sistema y DateofSale, y la muestra en la DaysSinceSale columna. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en días, entre la fecha del sistema y DateofSale, y la muestra en la DaysSinceSale columna. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en días laborables, entre la fecha del sistema y DateofSale, y la muestra en la DaysSinceSale columna. Si DateofSale cae un lunes, DateDiff cuenta el número de lunes hasta la fecha del sistema. Cuenta la fecha del sistema, pero no el DateofSale valor. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en las semanas del calendario, entre la fecha del sistema y DateofSale, y la muestra en la DaysSinceSale columna. Cuenta el número de domingos entre DateofSale y la fecha del sistema. Cuenta la fecha del sistema si cae en domingo, pero no cuenta DateofSale, incluso si cae en un domingo. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en horas, entre la fecha del sistema y DateTime, y la muestra en la DaysSinceSale columna. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en minutos, entre la fecha del sistema y DateTime, y la muestra en la DaysSinceSale columna. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devuelve la diferencia, en segundos, entre la fecha del sistema y DateTime, y la muestra en la DaysSinceSale columna. |
Usar la función DateDiff en una expresión
Puede usar la DateDiff función en cualquier lugar donde pueda usar expresiones. Por ejemplo, supongamos que tiene un formulario que usa para atender pedidos de clientes. En la tabla Pedidos, tiene un campo denominado ReceiveBefore que contiene la fecha en la que el cliente debe recibir el pedido. Puede usar la DateDiff función con un cuadro de texto en el formulario para mostrar el número de días que quedan antes de que se envíe el pedido.
Suponiendo que se tarda diez días en enviar cualquier pedido, establezca la propiedad Origen del control del cuadro de texto de la siguiente manera:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Al abrir el formulario en la vista Formulario, el cuadro de texto muestra el número de días que quedan para que se envíe el pedido. Si quedan menos de 10 días para que el cliente necesite recibir el pedido, el número del cuadro de texto es negativo. Indica cuántos días de retraso tendrá el pedido si lo envías inmediatamente.
Usar la función DateDiff en código VBA
En este ejemplo se usa la DateDiff función para mostrar el número de días entre una fecha determinada y hoy.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg