지정된 두 날짜 간의 시간 간격 수를 지정하는 Variant(Long)를 반환합니다.
구문
DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )
DateDiff 함수 구문에는 다음과 같은 인수가 사용됩니다.
인수 |
설명 |
---|---|
interval |
필수 요소입니다. date1과 date2의 차이를 계산하는 데 사용하는 시간 간격인 문자열 식입니다. |
date1, date2 |
필수 요소입니다. Variant (Date). 계산에 사용할 두 날짜입니다. |
firstdayofweek |
선택 요소입니다. 요일을 지정하는 상수. 지정하지 않으면 일요일이 가정됩니다. |
firstweekofyear |
선택 요소입니다. 연도의 첫 주를 지정하는 상수입니다. 지정하지 않으면 첫 번째 주가 1월 1일이 발생하는 주로 간주됩니다. |
설정
인수 간격 에는 다음과 같은 설정이 있습니다.
설정 |
설명 |
---|---|
yyyy |
년 |
q |
분기 |
m |
월 |
y |
연중 일 |
d |
일 |
w |
Weekday |
ww |
주 |
h |
시간 |
n |
분 |
s |
초 |
firstdayofweek 인수에는 다음 설정이 있습니다.
상수 |
값 |
설명 |
---|---|---|
vbUseSystem |
0 |
NLS API 설정을 사용합니다. |
vbSunday |
1 |
일요일(기본값) |
vbMonday |
2 |
월요일 |
vbTuesday |
3 |
화요일 |
vbWednesday |
4 |
수요일 |
vbThursday |
5 |
목요일 |
vbFriday |
6 |
금요일 |
vbSaturday |
7 |
토요일 |
상수 |
값 |
설명 |
---|---|---|
vbUseSystem |
0 |
NLS API 설정을 사용합니다. |
vbFirstJan1 |
1 |
1월 1일이 발생하는 주(기본값)로 시작합니다. |
vbFirstFourDays |
2 |
새해에 최소 4일이 있는 첫 주부터 시작합니다. |
vbFirstFullWeek |
3 |
올해의 첫 번째 전체 주부터 시작합니다. |
주의
DateDiff 함수를 사용하여 두 날짜 사이에 존재하는 지정된 시간 간격 수를 확인할 수 있습니다. 예를 들어 DateDiff 를 사용하여 두 날짜 사이의 일 수 또는 오늘과 연말 사이의 주 수를 계산할 수 있습니다.
date1 과 date2 사이의 일 수를 계산하려면 연도의 날("y") 또는 일("d")을 사용할 수 있습니다. interval이 Weekday("w")인 경우 DateDiff는 두 날짜 사이의 주 수를 반환합니다. date1이 월요일에 속하는 경우 DateDiff는 date2까지의 월요일 수를 계산합니다. date2는 계산되지만 date1은 계산되지 않습니다. 그러나 interval 이 Week("ww")인 경우 DateDiff 함수는 두 날짜 사이의 달력 주 수를 반환합니다. date1과 date2 사이의 일요일 수를 계산합니다. DateDiff 는 일요일에 속하는 경우 date2 를 계산합니다. 그러나 일요일에 떨어지더라도 date1은 계산되지 않습니다.
date1 이 date2보다 이후 시점을 참조하는 경우 DateDiff 함수는 음수를 반환합니다.
firstdayofweek 인수는 "w" 및 "ww" 간격 기호를 사용하는 계산에 영향을 줍니다.
date1 또는 date2가 날짜 리터럴 경우 지정된 연도는 해당 날짜의 영구적인 부분이 됩니다. 그러나 date1 또는 date2 가 큰따옴표(" ")로 묶이고 연도를 생략하면 date1 또는 date2 식이 계산될 때마다 현재 연도가 코드에 삽입됩니다. 이렇게 하면 다른 연도에 사용할 수 있는 코드를 작성할 수 있습니다.
바로 다음 해의 12월 31일과 1월 1일을 비교할 때 DateDiff for Year("yyyy")는 하루만 경과했음에도 불구하고 1을 반환합니다.
참고: date1 및 date2의 경우 Calendar 속성 설정이 그레고리력인 경우 제공된 날짜는 그레고리력이어야 합니다. 일정이 Hijri인 경우 제공된 날짜는 Hijri여야 합니다.
DateDiff 쿼리 예제
Expression |
결과 |
---|---|
SELECT DateDiff("yyyy",#01/01/2010#,[DateofSale]) AS Expr1 FROM ProductSales; |
Date2와 Date1의 차이를 '년'의 수로 반환합니다(Date1을 가장 오래된 것으로 간주하고 Date2를 최신으로 간주). 결과: "DateofSale" 필드의 값과 날짜 "01/01/2010"의 값이 '년'인 경우의 차이입니다. |
SELECT DateDiff("q",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateofSale"의 차이를 'Quarters' 수(계산기 연도 기준)로 반환하고 열 "DaysSinceSale"에 표시됩니다. 는 시스템 날짜와 "DateofSale"의 차이를 '월' 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
SELECT DateDiff("y",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateofSale"의 차이를 '일' 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
SELECT DateDiff("d",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateofSale"의 차이를 '일' 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
SELECT DateDiff("w",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateofSale"의 차이를 'Weekdays' 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. "DateofSale"이 월요일에 속하는 경우 DateDiff는 시스템 날짜까지의 월요일 수를 계산합니다. 시스템 날짜는 계산하지만 "DateofSale"의 값은 계산하지 않습니다. |
SELECT DateDiff("ww",[DateofSale],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateofSale"의 차이를 "Calender Week" 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. "DateofSale"과 "시스템 날짜" 사이의 일요일 수를 계산합니다. 일요일에 속하는 경우 시스템 날짜를 계산합니다. 하지만 일요일에 떨어지더라도 "DateofSale"은 계산되지 않습니다. |
SELECT DateDiff("h",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateTime"의 차이를 '시간'의 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
SELECT DateDiff("n",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateTime"의 차이를 '분'의 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
SELECT DateDiff("s",[DateTime],Date()) AS DaysSinceSale FROM ProductSales; |
시스템 날짜와 "DateTime"의 차이를 '초'의 수로 반환하고 열 "DaysSinceSale"에 표시됩니다. |
식 예제
식에서 DateDiff 함수 사용 식을 사용할 수 있는 모든 위치에서 DateDiff 함수를 사용할 수 있습니다. 예를 들어 고객 주문을 이행하는 데 사용하는 양식이 있다고 가정해 보겠습니다. 주문 테이블에는 고객이 주문을 받아야 하는 날짜가 포함된 ReceiveBefore 필드가 있습니다. DateDiff 함수를 양식의 텍스트 상자와 함께 사용하여 주문이 배송되기까지 남은 일 수를 표시할 수 있습니다.
주문을 발송하는 데 10일이 걸린다는 가정은 다음과 같이 텍스트 상자의 제어 원본 속성을 설정합니다.
=DateDiff("d", Now(), [Orders].[ ReceiveBefore])-10
양식 보기에서 양식을 열면 주문이 발송되기까지 남은 일 수가 텍스트 상자에 표시됩니다. 고객이 주문을 받기까지 10일이 채 남지 않은 경우 텍스트 상자의 숫자는 음수이며 주문이 즉시 배송되는 경우 주문이 얼마나 늦은지 나타냅니다.
VBA 예제
VBA 코드에서 DateDiff 함수 사용
이 예제에서는 DateDiff 함수를 사용하여 지정된 날짜와 오늘 사이의 일 수를 표시합니다.
Dim TheDate As Date ' Declare variables.
Dim Msg TheDate = InputBox("Enter a date") Msg = "Days from today: " & DateDiff("d", Now, TheDate) MsgBox Msg