Retorna uma Variant (longa) que especifica o número de intervalos de tempo entre duas datas.
Sintaxe
DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear])
A DateDiff função tem estes argumentos:
| Argumento | Descrição |
|---|---|
interval |
Obrigatório. Expressão de cadeia de caracteres, que é o intervalo de tempo usado para calcular a diferença entre date1 e date2. |
date1, date2 |
Obrigatório. Variante (Data). Duas datas que você deseja usar no cálculo. |
firstdayofweek |
Opcional. Uma constante que especifica o primeiro dia da semana. Se você não especificar, o domingo será assumido. |
firstweekofyear |
Opcional. Uma constante que especifica a primeira semana do ano. Se você não especificar, a primeira semana será a semana em que ocorre 1º de janeiro. |
Configurações
O interval argumento tem estas configurações:
| Configuração | Descrição |
|---|---|
yyyy |
Ano |
q |
Trimestre |
m |
Mês |
y |
Dia do ano |
d |
Dia |
w |
Dia da semana |
ww |
Semana |
h |
Hora |
n |
Minuto |
s |
Segundo |
O firstdayofweek argumento tem estas configurações:
| Constante | Valor | Descrição |
|---|---|---|
vbUseSystem |
0 | Usa a configuração da API NLS. |
vbSunday |
1 | Domingo (padrão) |
vbMonday |
2 | Segunda-feira |
vbTuesday |
3 | Terça-feira |
vbWednesday |
4 | Quarta-feira |
vbThursday |
5 | Quinta-feira |
vbFriday |
6 | Sexta-feira |
vbSaturday |
7 | Sábado |
| Constante | Valor | Descrição |
|---|---|---|
vbUseSystem |
0 | Usa a configuração da API NLS. |
vbFirstJan1 |
1 | Começa com a semana em que ocorre 1º de janeiro (padrão). |
vbFirstFourDays |
2 | Começa com a primeira semana que tem pelo menos quatro dias no ano novo. |
vbFirstFullWeek |
3 | Começa com a primeira semana completa do ano. |
Comentários
Você pode usar a DateDiff função para determinar quantos intervalos de tempo especificados existem entre duas datas. Por exemplo, você pode usá-las DateDiff para calcular o número de dias entre duas datas ou o número de semanas entre hoje e o final do ano.
Para calcular o número de dias entre date1 e date2, é possível usar Dia do ano ("y") ou Dia ("d"). Quando interval é o dia da semana ("w"), DateDiff retorna o número de semanas entre as duas datas. Se date1 cair em uma segunda-feira, DateDiff conta o número de segundas-feiras até date2. Isso conta, date2 mas não date1. Se interval for Semana ("ww"), no entanto, a DateDiff função retornará o número de semanas do calendário entre as duas datas. Ele conta o número de domingos entre date1 e date2.
DateDiff
date2 conta se cair em um domingo, mas não conta date1, mesmo que caia em um domingo.
Se date1 se referir a um ponto posterior no tempo do que date2, a DateDiff função retornará um número negativo.
O firstdayofweek argumento afeta cálculos que usam os "w" símbolos de intervalo e "ww" .
Se date1 ou date2 for uma data literal, o ano especificado se tornará uma parte permanente dessa data. No entanto, se date1 ou date2 for colocado entre aspas duplas (" ") e você omitir o ano, o ano atual será inserido no código sempre que a date1 expressão ou date2 for avaliada. Isso torna possível escrever código que você pode usar em anos diferentes.
Quando você compara 31 de dezembro com 1º de janeiro do ano seguinte, DateDiff pois o Ano ("yyyy") retorna 1, mesmo que apenas um dia tenha passado.
Observação
Para date1 e date2, se a configuração da Calendar propriedade for gregoriano, a data fornecida deverá ser gregoriano. Se o calendário for islâmico, a data fornecida deverá ser islâmico.
Exemplos de consulta DateDiff
| Expressão. | Resultados |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Retorna a diferença, em anos, entre a data 01/01/2010 e os valores no DateofSale campo. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em trimestres com base no ano civil, entre a data do sistema e DateofSale, e exibe-a DaysSinceSale na coluna. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em dias, entre a data do sistema e DateofSale, e a exibe na DaysSinceSale coluna. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em dias, entre a data do sistema e DateofSale, e a exibe na DaysSinceSale coluna. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em dias da semana, entre a data do sistema e DateofSale, e a exibe na DaysSinceSale coluna. Se DateofSale cair em uma segunda-feira, DateDiff conta o número de segundas-feiras até a data do sistema. Ele conta a data do sistema, mas não o DateofSale valor. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em semanas de calendário, entre a data do sistema e DateofSale, e exibe-a DaysSinceSale na coluna. Conta o número de domingos entre DateofSale e a data do sistema. Ele conta a data do sistema se cair em um domingo, mas não conta DateofSale, mesmo que caia em um domingo. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em horas, entre a data do sistema e DateTime, e a exibe na DaysSinceSale coluna. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em minutos, entre a data do sistema e DateTime, e exibe-a DaysSinceSale na coluna. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Retorna a diferença, em segundos, entre a data do sistema e DateTime, e a exibe na DaysSinceSale coluna. |
Usar a função DateDiff em uma expressão
Você pode usar a DateDiff função em qualquer lugar onde possa usar expressões. Por exemplo, suponha que você tenha um formulário usado para atender aos pedidos de clientes. Na tabela Pedidos, você tem um campo chamado ReceiveBefore que contém a data em que o cliente precisa receber o pedido. Você pode usar a DateDiff função com uma caixa de texto no formulário para exibir o número de dias restantes antes que o pedido seja enviado.
Supondo que demore dez dias para o envio de qualquer pedido, defina a propriedade Fonte do Controle da caixa de texto da seguinte maneira:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Quando você abre o formulário no Modo Formulário, a caixa de texto exibe o número de dias restantes antes que o pedido seja enviado. Se faltarem menos de 10 dias para que o cliente precise receber o pedido, o número na caixa de texto será negativo. Indica quantos dias de atraso o pedido estará se você o enviar imediatamente.
Use a função DateDiff no código VBA
Este exemplo usa a DateDiff função para exibir o número de dias entre uma determinada data e hoje.
Dim TheDate As Date ' Declare variables.
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg