Função DateDiff

Aplica-se a
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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 é o intervalo de tempo que utiliza para calcular a diferença entre date1 e date2.
date1, date2 Obrigatório. Variante (Data). Duas datas que pretende utilizar no cálculo.
firstdayofweek Opcional. Uma constante que especifica o primeiro dia da semana. Se não o especificar, será assumido domingo.
firstweekofyear Opcional. Uma constante que especifica a primeira semana do ano. Se não o especificar, a primeira semana é a semana em que ocorre 1 de janeiro.

Configurações

O interval argumento tem estas definiçõ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 definições:

Constante Valor Descrição
vbUseSystem 0 Utiliza a definiçã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 Utiliza a definição da API NLS.
vbFirstJan1 1 Começa com a semana em que ocorre 1 de janeiro (predefiniçã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

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 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 cair numa segunda-feira, DateDiff conta o número de segundas-feiras até date2. Conta date2 , mas não date1. Se interval for Semana ("ww"), no entanto, a DateDiff função devolve o número de semanas de calendário entre as duas datas. Conta o número de domingos entre date1 e date2. DateDiff conta date2 se cair num domingo, mas não conta date1, mesmo que caia num domingo.

Se date1 se referir a um ponto posterior no tempo do que date2, a DateDiff função devolve um número negativo.

O firstdayofweek argumento afeta os cálculos que utilizam os "w" símbolos de intervalo e ."ww"

Se date1 for 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 duplas (" ") e omitir o ano, o ano atual é inserido no código sempre que a date1 expressão ou date2 for 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 Ano ("yyyy") devolve 1, apesar de apenas um dia ter passado.

Observação

Para date1 e date2, se a definição da Calendar propriedade for Gregoriana, 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 com base no ano do calendário, entre a data do sistema e DateofSalee apresenta-a na DaysSinceSale coluna.
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Devolve a diferença, em dias, entre a data do sistema e DateofSalee apresenta-a na DaysSinceSale coluna.
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Devolve a diferença, em dias, entre a data do sistema e DateofSalee apresenta-a na DaysSinceSale coluna.
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; Devolve a diferença, nos dias úteis, entre a data do sistema e DateofSale, e apresenta-a na DaysSinceSale 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 de calendário, entre a data do sistema e DateofSalee apresenta-a na DaysSinceSale 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 DateTimee apresenta-a na DaysSinceSale coluna.
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; Devolve a diferença, em minutos, entre a data do sistema e DateTimee apresenta-a na DaysSinceSale coluna.
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; Devolve a diferença, em segundos, entre a data do sistema e DateTimee apresenta-a na DaysSinceSale coluna.

Utilizar a função DateDiff numa expressão

Pode utilizar a DateDiff função em qualquer lugar onde possa utilizar expressões. Por exemplo, suponha que tem um formulário que utiliza para cumprir as encomendas dos clientes. Na tabela Encomendas, tem um campo com o nome ReceiveBefore que contém a data pela qual o cliente precisa 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 abre o formulário na Vista de Formulário, a caixa de texto apresenta o número de dias restantes antes do envio da encomenda. Se restam menos de 10 dias antes de o cliente precisar de receber a encomenda, o número na caixa de texto será negativo. Indica quantos dias se atrasará a encomenda se a enviar imediatamente.

Utilizar a função DateDiff no 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

Veja Também

Escolher a função de data certa