DATEDIFF

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

Returns the number of a given time interval between two specified dates (Long).


intervalThe interval of time you want to calculate (String):
"yyyy","YYYY" = year
"q","Q" = quarter
"m","M" = month
"y","Y" = day of year
"d","D" = day
"w","W" = weekday
"ww","WW" = week
"h","H" = hour
"n","N" = minute
"s","S" = second
date1The start date (Date).
date2The finish date (Date).
firstdayofweek(Optional) A vbDayOfWeek constant that specifies the first day of the week:
0 = vbUseSystemDayofWeek
1 = vbSunday (default)
2 = vbMonday
3 = vbTuesday
4 = vbWednesday
5 = vbThursday
6 = vbFriday
7 = vbSaturday
firstweekofyear(Optional) A vbFirstWeekOfYear constant that specifies the first week of the year:
0 = vbUseSystem
1 = vbFirstJan1 (default)
2 = vbFirstFourDays
3 = vbFirstFullWeek

REMARKS
* If "interval" = "w", the number of weeks is based on how many days. 7 days = 1 week.
* If "interval" = "ww", the number of weeks is based on how many Sundays there are.
* If "interval" = "ww" and "date1" falls on a Sunday, it will not get included/counted.
* If "interval" = "ww" and "date2" falls on a Sunday, it will get included/counted.
* If "date1" or "date2" are enclosed in double quotation marks and the year is not entered then the current year is used.
* If "date1" > "date2" then a negative number is returned.
* If "firstdayofweek" is left blank, then 1 is used (ie Sunday).
* Sunday is considered the first day of the week in: USA, Canada, South Africa, India, Japan, South Korea.
* Monday is considered the first day of the week in: UK, Germany, France, Australia, New Zealand, China.
* If "firstweekofyear" is left blank, then the first week is assumed to be the week in which January 1 occurs.
* The "firstdayofweek" is only relevant if the "interval" is either "w" or "ww".
* This function can be used to determine how many specified time intervals exist between two dates.
* You can use the DATE function to return the current system date.
* You can use the DATEADD function to return the date with a specified time interval added.
* You can use the DATEPART function to return the specified part of a given date.
* You can use the DATESERIAL function to return the date given a year, month and day.
* You can use the DATEVALUE function to return the date given a string representation of a date.
* The equivalent Excel function is Application.WorksheetFunction.DATEDIF
* The equivalent .NET function is [[Microsoft.VisualBasic.DateAndTime.DateDiff]]
* For the Microsoft documentation refer to learn.microsoft.com

'Return number of days between
Debug.Print DateDiff("d", "1 Jan 2024", "1 Apr 2024") '= 91
Debug.Print DateDiff("y", "1 Jan 2024", "1 Apr 2024") '= 91

'Return number of weeks (based on 7 days)
Debug.Print DateDiff("w", "1 Jan 2024", "2 Jan 2024") '= 0
Debug.Print DateDiff("w", "1 Jan 2024", "3 Jan 2024") '= 0
Debug.Print DateDiff("w", "1 Jan 2024", "7 Jan 2024") '= 0
Debug.Print DateDiff("w", "1 Jan 2024", "8 Jan 2024") '= 1
Debug.Print DateDiff("w", "1 Jan 2024", "14 Jan 2024") '= 1
Debug.Print DateDiff("w", "1 Jan 2024", "15 Jan 2024") '= 2

Debug.Print DateDiff("w", "4 Jan 2024", "7 Jan 2024") '= 0
Debug.Print DateDiff("w", "4 Jan 2024", "10 Jan 2024") '= 0
Debug.Print DateDiff("w", "4 Jan 2024", "11 Jan 2024") '= 1
Debug.Print DateDiff("w", "4 Jan 2024", "17 Jan 2024") '= 1
Debug.Print DateDiff("w", "4 Jan 2024", "18 Jan 2024") '= 2

'Return number of weeks (based on the specific weekday)
'6 Jan 2024 = Saturday
'7 Jan 2024 = Sunday
'8 Jan 2024 = Monday
Debug.Print DateDiff("ww", "6 Jan 2024", "7 Jan 2024") '= 1
Debug.Print DateDiff("ww", "6 Jan 2024", "8 Jan 2024") '= 1
Debug.Print DateDiff("ww", "6 Jan 2024", "12 Jan 2024") '= 1
Debug.Print DateDiff("ww", "6 Jan 2024", "13 Jan 2024") '= 1
Debug.Print DateDiff("ww", "6 Jan 2024", "19 Jan 2024") '= 2
Debug.Print DateDiff("ww", "6 Jan 2024", "20 Jan 2024") '= 2

Debug.Print DateDiff("ww", "9 Jan 2024", "12 Jan 2024") '= 0
Debug.Print DateDiff("ww", "9 Jan 2024", "15 Jan 2024") '= 1
Debug.Print DateDiff("ww", "9 Jan 2024", "16 Jan 2024") '= 1
Debug.Print DateDiff("ww", "9 Jan 2024", "22 Jan 2024") '= 2
Debug.Print DateDiff("ww", "9 Jan 2024", "23 Jan 2024") '= 2

Debug.Print DateDiff("d", VBA.Date(), "31/12/2024", 3, 0) '= 317
Debug.Print DateDiff("d", VBA.Date(), "31/12/2005", 2, 0) '= -6623
Debug.Print DateDiff("yyyy", "31 Dec 2023", "1 Jan 2024") '= 1
Debug.Print DateDiff("d", #12/1/2024#, #12/1/2023#, 0, 0) '= -366 - 2024 is a leap year so Feb has 29 days

© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited Top