ACC2000: Storing, Calculating, and Comparing Date/Time DataID: q210276
|
This article explains how Microsoft Access stores the Date/Time data
type, and why you may receive unexpected results when you calculate or
compare dates and times.
This article addresses the following topics:
Double Date Actual Time Actual
Number Portion Date Portion Time
------------------------------------------------------------------
1.0 1 December 31,1899 .0 12:00:00 A.M.
2.5 2 January 1, 1900 .5 12:00:00 P.M.
27468.96875 27468 March 15, 1975 .96875 11:15:00 P.M.
36836.125 36836 November 6, 2000 .125 3:00:00 A.M.
To view how Microsoft Access stores Date/Time values as numbers, type the
following commands in the Immediate window, press ENTER, and note the results:
?CDbl(#5/18/1999 14:00:00#)Result equals: 36298.5833333333
?CDbl(#12/14/1849 17:32:00#)Result equals: -18278.7305555556
?CVDate(1.375)Result equals: 12/31/1899 9:00:00 AM
?CVDate(-304398.575)Result equals: 8/1/1066 1:48:00 PM
Stored Value Default Format Custom Format
(Double Number) (General Date) (mm/dd/yyyy hh:nn:ss AM/PM)
---------------------------------------------------------------------
36295.0 5/15/99 05/15/1999 12:00:00 AM
0.546527777777778 1:07 PM 12/30/1899 01:07:00 PM
36232.9375 3/13/99 10:30PM 03/13/1999 10:30:00 PM
NOTE: The default format for a Date/Time value is General Date. If a value is date-only, then no time is displayed. If the value is time-only, then no date is displayed.
http://www.microsoft.com/mcsp/For more information about the support options available from Microsoft, please see the following page on the World Wide Web:
http://www.microsoft.com/support/supportnet/overview/overview.aspTo calculate and format time intervals correctly, follow these steps:
Option Explicit
'------------------------------------------------------------------
' This function calculates the elapsed time between two values and
' formats the result in four different ways.
'
' The function accepts interval arguments such as the following:
'
' #5/12/95 6:00:00AM# - #5/11/95 10:00:00PM#
'
' -or-
'
' [End Time]-[Start Time]
'------------------------------------------------------------------
Function ElapsedTime (Interval)
Dim x
x = Int(CSng(Interval * 24 * 3600)) & " Seconds"
Debug.Print x
x = Int(CSng(Interval * 24 * 60)) & ":" & Format(Interval, "ss") _
& " Minutes:Seconds"
Debug.Print x
x = Int(CSng(Interval * 24)) & ":" & Format(Interval, "nn:ss") _
& " Hours:Minutes:Seconds"
Debug.Print x
x = Int(CSng(Interval)) & " days " & Format(Interval, "hh") _
& " Hours " & Format(Interval, "nn") & " Minutes " & _
Format(Interval, "ss") & " Seconds"
Debug.Print x
End Function
? ElapsedTime(#6/1/1999 8:23:00PM#-#6/1/1999 8:12:12AM#)Note that the following values are displayed:
43848 Seconds
730:48 Minutes:Seconds
12:10:48 Hours:Minutes:Seconds
0 days 12 Hours 10 Minutes 48 Seconds
? Now()=DateValue("3/31/1999")The Now() function returns a double-precision number representing the current date and time. However, the DateValue() function returns an integer number representing the date but not a fractional time value. As a result, Now() equals DateValue() only when Now() returns a time of 00:00:00 (12:00:00 A.M.).
?Date()=DateValue("3/31/1999")
?Int(Now())=DateValue("3/31/1999")
For additional information about calculating date and time values, please see the following article in the Microsoft Knowledge Base:
Q210604 ACC2000: Functions for Calculating and Displaying Date/Time ValuesFor more information about how to format Date/Time data types, click Microsoft Access Help on the Help menu, type "format property - date/time data type" in the Office Assistant or the Answer Wizard, and then click Search to view the topic.
Additional query words: inf
Keywords : kbprg kbdta AccCon TblDatyp KbVBA
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: July 6, 1999