Artigo: 210276 - Última revisão: quinta-feira, 15 de Março de 2007 - Revisão: 6.3 Como guardar, calcular e comparar dados de data/hora no Microsoft Access Para obter uma versão deste artigo referente ao
Microsoft Access 97, consulte
130514
(http://support.microsoft.com/kb/130514/
)
. Moderado: Requer conhecimentos básicos sobre macros, programação e
interoperabilidade. Nesta páginaSumário Este artigo descreve como o Microsoft Access guarda o tipo
de dados Data/hora. Este artigo também descreve por que pode receber resultados
inesperados quando calcula ou compara datas e horas. Este artigo descreve os seguintes tópicos:
Mais InformaçãoGuardar os dados relativos a Data/horaO Access guarda o tipo de dados Data/hora como um número de vírgula flutuante de precisão dupla até 15 casas decimais. A parte inteira do número de precisão dupla representa a data. A parte decimal representa a hora.Os valores de data válidos vão de -657.434 (1 de Janeiro de 100 d.C.) a 2.958.465 (31 de Dezembro de 9999 d.C.). Um valor de data 0 representa o dia 30 de Dezembro de 1899. O Access guarda datas anteriores a 30 de Dezembro de 1899 como números negativos. Os valores de hora válidos vão de 0,0 (00:00:00) a 0,9999 (23:59:59). O valor numérico representa uma fracção de um dia. Pode converter o valor numérico em horas, minutos e segundos multiplicando o valor numérico por 24. A seguinte tabela mostra como o Access guarda valores de data/hora:
Número Parte Data Parte Hora
duplo da data real da hora real
-----------------------------------------------------------------------------
1,0 1 31 de Dezembro de 1899 0,0 12:00:00
2,5 2 1 de Janeiro de 1900 0,5 24:00:00
27468,96875 27468 15 de Março de 1975 0,96875 23:15:00
36836,125 36836 6 de Novembro de 2000 0,125 3:00:00
?CDbl(#18/5/1999 14:00:00#)
O resultado é igual a: 36298.5833333333
?CDbl(#14/12/1849 17:32:00#)
O resultado é igual a: -18278.7305555556 Para visualizar a data e a hora relativa a valores numéricos, escreva os seguintes comandos na janela Immediate, prima ENTER e repare nos resultados:
?CVDate(1.375)
O resultado é igual a: 31/12/1899 9:00:00
?CVDate(-304398.575)
O resultado é igual a: 1/8/1066 13:48:00 Formatar um campo Data/HoraPode formatar um valor Data/Hora para apresentar uma data, uma hora ou ambos. Quando utiliza um formato de apenas data, o Access guarda um valor 0 para a parte da hora. Quando utiliza um formato de apenas hora, o Access guarda um valor 0 para a parte da data.A seguinte tabela mostra como o Access guarda valores de data/hora. A tabela que se segue mostra também como pode apresentar esses valores utilizando formatos diferentes:
Valor guardado Formato predefinido Formato personalizado
(número duplo) (Data geral) (dd-mm-aaaa hh:mm:ss)
---------------------------------------------------------------------
36295,0 15-05-99 15-05-1999 12:00:00
0,546527777777778 13:07 30-12-1899 13:07:00
36232,9375 13-3-99 22:30 13-03-1999 22:30:00
Calcular os dados relativos à horaDado que um valor de horas é guardado como uma fracção de um dia de 24 horas, poderá receber resultados com formatação incorrecta quando calcular intervalos de tempo superiores a 24 horas. Para contornar este comportamento, pode criar uma função definida pelo utilizador para se certificar de que os intervalos são correctamente formatados.A Microsoft fornece exemplos de programação apenas a título informativo, sem garantia expressa ou implícita, incluindo, sem limitação, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador conhece a linguagem de programação apresentada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Para calcular e formatar correctamente períodos de tempo, siga estes passos:
Comparar os dados relativos à dataComo as datas e as horas estão guardadas em conjunto como números de precisão dupla, poderão receber resultados inesperados quando compara os dados Data/hora. Por exemplo, se escrever a seguinte expressão na janela Immediate, receberá um resultado False mesmo se a data actual for 31-3-1999:
? Now()=DateValue("31/3/1999")
A função Now() devolve um número de precisão dupla que representa a data e a
hora actuais. Contudo, a função DateValue() devolve um número inteiro que representa a data, mas não um valor
de horas fraccionário. Por este motivo, o resultado de Now() é igual ao de DateValue() apenas quando Now() devolve um valor 00:00:00 (12:00:00).Para receber resultados correctos quando comparar valores de datas, utilize uma das seguintes funções. Para testar cada função, escreva a função na janela Immediate, substitua 31-3-1999 pela data actual e prima ENTER:
Comparar os dados relativos à horaQuando compara os valores relativos à hora poderá receber resultados inconsistentes porque um valor de horas está guardado como a parte fraccional de um número de vírgula flutuante de precisão dupla. Por exemplo, se escrever a expressão que se segue na janela Immediate, receberá um resultado falso (0) apesar de os dois valores de hora parecerem iguais.
var1 = #14:01:00 # Quando o Access converte um valor de horas numa fracção, o
resultado calculado pode não ser idêntico ao valor de horas. A pequena
diferença provocada pelo cálculo é suficiente para produzir um resultado falso
(0) quando compara um valor guardado com um valor constante.var2 = DateAdd("n", 10, var1) ? var2 = #14:11:00 # Para receber resultados correctos quando comparar valores de horas, utilize um dos seguintes métodos. Para testar cada método, escreva cada um na janela Immediate e prima ENTER: Adicionar uma data associada à comparação de horas:var1 = #1/1/99 14:01:00 #
var1 = #1/1/99 14:01:00 # Converter os valores de horas em tipos de dados de cadeia antes de os comparar:var2 = DateAdd("n", 10, var1) ? var2 = #1/1/99 14:11:00 #
var1 = #14:01:00 # Utilizar a função DateDiff() para comparar unidades precisas, como os segundos:var2 = DateAdd("n", 10, var1) ? CStr(var2) = CStr(#14:11:00 #)
var1 = #14:01:00 # var2 = DateAdd("n", 10, var1) ? DateDiff("s", var2, #14:11:00 #) = 0 Referências Para obter informações
adicionais sobre como calcular valores de data e de hora, clique no número de
artigo que se segue para visualizar o artigo na base de dados de conhecimento
da Microsoft (KB, Microsoft Knowledge Base): 210604
(http://support.microsoft.com/kb/210604/
)
Funções para calcular e apresentar valores de data/hora no Access
Para obter mais informações sobre
como formatar tipos de dados de data/hora, clique em Ajuda do Microsoft
Access no menu Ajuda, escreva format property
- date/time data type no Assistente do Office ou no Assistente de respostas e clique em Procurar para visualizar o tópico.
| Traduções de Artigos
|
Voltar ao topo
