Devolve uma Variante (Longo) 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 que corresponde ao intervalo de tempo utilizado para calcular a diferença entre date1 e date2. |
date1, date2 |
Obrigatório. Variant (Date). Duas datas que pretende utilizar no cálculo. |
firstdayofweek |
Opcional. Uma constante que especifica o primeiro dia da semana. Se não o especificar, domingo é considerado o primeiro dia. |
firstweekofyear |
Opcional. Uma constante que especifica a primeira semana do ano. Se não o especificar, a primeira semana é a semana de 1 de janeiro. |
Definições
O interval argumento tem as seguintes definições:
| Definiçã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 as seguintes definições:
| Constante | Valor | Descrição |
|---|---|---|
vbUseSystem |
0 | Usa a configuração da API NLS. |
vbSunday |
1 | Domingo (predefiniçã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 de 1 de Janeiro (predefinição). |
vbFirstFourDays |
2 | Começa com a primeira semana que tenha, pelo menos, quatro dias no ano novo. |
vbFirstFullWeek |
3 | Começa com a primeira semana completa do ano. |
Observações
Pode utilizar a DateDiff função para determinar quantos intervalos de tempo especificados existem entre duas datas. Por exemplo, pode utilizar DateDiff para calcular o número de dias entre duas datas ou o número de semanas entre a hoje e o final do ano.
Para calcular o número de dias entre date1 e date2, pode utilizar o Dia do ano ("y") ou o Dia ("d"). Quando interval é Dia da Semana ("w"), DateDiff devolve o número de semanas entre as duas datas. Se date1 cai em uma segunda-feira, DateDiff conta o número de segundas-feiras até date2. Conta, mas não date1contadate2. No entanto, se intervalDateDiff for Semana ("ww"), a função devolve o número de semanas do calendário entre as duas datas. Conta o número de domingos entre date1 e date2.
DateDiff
date2 conta se cair num domingo, mas não contadate1, mesmo que caia num domingo.
Se date1 se referir a um ponto posterior no tempo do , date2a DateDiff função devolve um número negativo.
O firstdayofweek argumento afeta os cálculos que utilizam os "w" símbolos e "ww" intervalo.
Se date1 ou date2 for uma data literal, o ano especificado torna-se uma parte permanente dessa data. No entanto, se date1 estiver entre date2 aspas (" ") e omitir o ano, o ano atual é inserido no código sempre que a date1 expressão for date2 avaliada. Isto permite escrever código que pode utilizar em anos diferentes.
Quando compara 31 de dezembro a 1 de janeiro do ano seguinte, DateDiff para o Ano ("yyyy") devolve 1 mesmo que tenha passado apenas um dia.
Nota
Para date1 e date2, se a definição da Calendar propriedade for Gregoriano, a data fornecida tem de ser Gregoriana. Se o calendário for Hijri, a data fornecida tem de ser Hijri.
Exemplos de Consulta DateDiff
| Expressão | Resultados |
|---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Devolve 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; |
Devolve a diferença, em trimestres baseados no ano civil, entre a data do sistema e DateofSale, e apresenta-a DaysSinceSale na coluna. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em dias, entre a data do sistema e DateofSale, e apresenta-a DaysSinceSale na coluna. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em dias, entre a data do sistema e DateofSale, e apresenta-a DaysSinceSale na coluna. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em dias úteis, entre a data do sistema e DateofSale, e apresenta-a DaysSinceSale na coluna. Se DateofSale cair numa segunda-feira, DateDiff conta o número de segundas-feiras até à data do sistema. Conta a data do sistema, mas não o DateofSale valor. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em semanas do calendário, entre a data do sistema e DateofSale, e apresenta-a DaysSinceSale na coluna. Conta o número de domingos entre DateofSale e a data do sistema. Conta a data do sistema se cair num domingo, mas não conta DateofSale, mesmo que caia num domingo. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em horas, entre a data do sistema e DateTime, e apresenta-a DaysSinceSale na coluna. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em minutos, entre a data do sistema e DateTime, e apresenta-a DaysSinceSale na coluna. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença, em segundos, entre a data do sistema e DateTime, e apresenta-a DaysSinceSale na coluna. |
Utilizar a função DifData numa expressão
Pode utilizar a função onde for possível utilizar expressões DateDiff . Por exemplo, imagindmox que tem um formulário que utiliza para realizar encomendas de clientes. Na tabela Encomendas, tem um campo com o nome ReceiveBefore que contém a data em que o cliente tem de receber a encomenda. Pode utilizar a DateDiff função com uma caixa de texto no formulário para apresentar o número de dias restantes antes do envio da encomenda.
Partindo do princípio de que demora dez dias a enviar qualquer encomenda, defina a propriedade Origem do Controlo da caixa de texto da seguinte forma:
=DateDiff("d", Now(), [Orders].[ReceiveBefore])-10
Quando abrir o formulário na Vista Formulário, a caixa de texto apresenta o número de dias restantes antes do envio da encomenda. Se faltarem menos de 10 dias para o cliente precisar receber o pedido, o número na caixa de texto é negativo. Indica quantos dias de atraso a encomenda terá se a enviar imediatamente.
Utilizar a função DateDiff em código VBA
Este exemplo utiliza a DateDiff função para apresentar 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