Devolve uma Variante (Longo) que especifica o número de intervalos de tempo entre duas datas especificadas
Sintaxe
DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
A sintaxe da função DateDiff tem os seguintes 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 for especificado, pressupõe-se que domingo é o primeiro dia da semana. |
firstweekofyear |
Opcional. Uma constante que especifica a primeira semana do ano. Se não for especificada, pressupõe-se que a semana de 1 de janeiro é a primeira semana do ano. |
Definições
O argumento intervalargumento tem as seguintes definições:
Definição |
Descrição |
---|---|
aaaa |
Ano |
t |
Trimestre |
m |
Mês |
a |
Dia do ano |
d |
Dia |
s |
Dia útil |
ss |
Semana |
h |
Hora |
n |
Minuto |
s |
Segundo |
O argumento firstdayofweek tem as seguintes definições:
Constante |
Valor |
Descrição |
---|---|---|
vbUseSystem |
0 |
Utilizar a definição NLS API. |
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 |
Utilizar a definição NLS API. |
vbFirstJan1 |
1 |
Começar com a semana de 1 de Janeiro (predefinição). |
vbFirstFourDays |
2 |
Começar com a primeira semana que tenha, pelo menos, quatro dias no ano novo. |
vbFirstFullWeek |
3 |
Começar com a primeira semana completa do ano. |
Observações
Pode utilizar a função DateDiff 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 for Weekday ("w"), DateDiff devolve o número de semanas entre as duas datas. Se date1 se situar numa segunda-feira DateDiff conta o número de segundas até date2. Conta date2 mas não date1. No entanto, se interval for Week ("ww"), a função DateDiff devolve o número de semanas do calendário entre as duas datas. Conta o número de domingos entre date1 e date2. DateDiff conta date2 caso se situe num sábado; mas não conta date1, mesmo que se situe num sábado.
Se date1 se referir a um ponto posterior no tempo relativamente a date2, a função DateDiff devolve um número negativo.
O argumento firstdayofweek afeta os cálculos que utilizam os símbolos de intervalo "w" e "ww".
Se date1 ou date2 for um literal de data, o ano especificado torna-se uma parte permanente dessa data. No entanto, se date1 ou date2 estiver entre aspas (" ") e omitir o ano, o ano atual é inserido no código sempre que a expressão date1 ou date2 for avaliada. Isto permite escrever código que pode ser utilizado em anos diferentes.
Quando comparar 31 de dezembro a 1 de janeiro do ano imediatamente a seguir, DateDiff do Ano ("yyyy") devolve 1, mesmo que apenas tenha decorrido um dia.
Nota: Para date1 e date2, se a definição da propriedade do Calendário 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("aaaa",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Devolve a diferença entre Date2 e Date1 (considere Date1 como a mais antiga e Date2 como a mais recente) como o número de "Anos". Resultado: diferença entre os valores no campo "DateofSale" e a data "01/01/2010" como o número de "Anos". |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateofSale" como o número de "Trimestres" (com base no ano do calender) e é apresentada na coluna "DaysSinceSale". devolve a diferença entre a data do sistema e "DateofSale" como número de "Meses" e é apresentada na coluna "DaysSinceSale". |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateofSale" como o número de "Dias" e é apresentada na coluna "DaysSinceSale". |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateofSale" como o número de "Dias" e é apresentada na coluna "DaysSinceSale". |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateofSale" como número de "Dias Úteis" e é apresentada na coluna "DaysSinceSale". 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 valor em "DateofSale". |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateofSale" como o número de "Semanas do Calender" e é apresentada na coluna "DaysSinceSale". Conta o número de domingos entre "DateofSale" e "data do sistema". Contará 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 entre a data do sistema e "DateTime" como número de "Horas" e é apresentada na coluna "DaysSinceSale". |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateTime" como o número de "Minutos" e é apresentada na coluna "DaysSinceSale". |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
Devolve a diferença entre a data do sistema e "DateTime" como número de "segundos" e é apresentada na coluna "DaysSinceSale". |
Exemplo de expressão
Utilizar a função DateDiff numa expressão Pode utilizar a função DateDiff onde quer que possa utilizar expressões. Por exemplo, imagindmox que tem um formulário que utiliza para realizar encomendas de clientes. Na tabela Encomendas, tem um campo denominado ReceiveBefore que contém a data em que o cliente tem de receber a encomenda. Pode utilizar a função DateDiff 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 a data em que o cliente necessita de receber a encomenda, o número na caixa de texto é negativo e indica quantos dias de atraso a encomenda terá se for enviada imediatamente.
Exemplo de VBA
Utilizar a função DateDiff em código VBA
Este exemplo utiliza a função DateDiff 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