Date/Time Functions Part 3

(The DateDiff Function)



The DateDiff function returns a long integer specifying the number of time intervals between two specified dates.



DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])


The DateDiff function syntax has these parts:





Required. String expression that is the interval of time you use to calculate the difference between date1 and date2..


The string expression can be any of the following:











Day of year













date1, date2

Required; Date. The two dates you want to use in the calculation



Optional. A constant that specifies the first day of the week. If not specified, Sunday is assumed.



Optional. A constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs.






You can use the DateDiff function to determine how many specified time intervals exist between two dates. For example, you might use DateDiff to calculate the number of days between two dates, or the number of weeks between today and the end of the year.


To calculate the number of days between date1 and date2, you can use either Day of year ("y") or Day ("d"). When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1. If interval is Week ("ww"), however, the DateDiff function returns the number of calendar weeks between the two dates. It counts the number of Sundays between date1 and date2. DateDiff counts date2 if it falls on a Sunday; but it doesn't count date1, even if it does fall on a Sunday.


If date1 refers to a later point in time than date2, the DateDiff function returns a negative number.


The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.


If date1 or date2 is a date literal, the specified year becomes a permanent part of that date. However, if date1 or date2 is enclosed in double quotation marks (" "), and you omit the year, the current year is inserted in your code each time the date1 or date2 expression is evaluated. This makes it possible to write code that can be used in different years.


When comparing December 31 to January 1 of the immediately succeeding year, DateDiff for Year ("yyyy") returns 1 even though only a day has elapsed.


To demonstrate DateDiff, set up a "Try It" project, and place the following code in the cmdTryIt_Click event:


Private Sub cmdTryIt_Click()

Print "Current date/time is: "; _

Format$(Now, "Long Date"); _

Spc(1); _

Format$(Now, "Long Time")

Print "*** DateDiff Function Examples (1/1/2001 vs. Now) ***"

Print "Using 'yyyy':"; Tab(20); DateDiff("yyyy", #1/1/2001#, Now)

Print "Using 'q':"; Tab(20); DateDiff("q", #1/1/2001#, Now)

Print "Using 'm':"; Tab(20); DateDiff("m", #1/1/2001#, Now)

Print "Using 'y':"; Tab(20); DateDiff("y", #1/1/2001#, Now)

Print "Using 'd':"; Tab(20); DateDiff("d", #1/1/2001#, Now)

Print "Using 'w':"; Tab(20); DateDiff("w", #1/1/2001#, Now)

Print "Using 'ww':"; Tab(20); DateDiff("ww", #1/1/2001#, Now)

Print "Using 'h':"; Tab(20); DateDiff("h", #1/1/2001#, Now)

Print "Using 'n':"; Tab(20); DateDiff("n", #1/1/2001#, Now)

Print "Using 's':"; Tab(20); DateDiff("s", #1/1/2001#, Now)


End Sub


Run the project and click the "Try It" button. The output should look similar to the following:




Download the VB project code for the example above here.