아래 설명 자료는 MSDN의 내용을 발췌하여 예제를 작성한 내용입니다. 검색보다는 항상 MSDN 문서를 보는 습관을 가집시다.

Now, Date, Year, Month, Day, Time, Hour, Minute, Second 등의 사용이 간단한 함수에 대한 설명은 따로 하지 않겠습니다.
하지만 자주 사용하는 함수이므로 반드시 숙지하시기 바랍니다.


Weekday 함수

설명
요일을 나타내는 정수를 반환합니다.

구문
Weekday(date, [firstdayofweek])

firstdayofweek 를 생략하면 vbSunday(일요일)를 기준으로 정수를 반환합니다.
반환된 값이 1이면 일요일, 2이면 월요일, 3이면 화요일... 7이면 토요일 이런 식이죠.

예제
Debug.Print Weekday(now)
Debug.Print DatePart("w", Now)
Debug.Print Choose(Weekday(Now), "일", "월", "화", "수", "목", "금", "토")




WeekDayName 함수

설명
지정된 요일을 나타내는 문자열을 반환합니다.

구문
WeekDayName(weekday, [abbreviate], [firstdayofweek])

MSDN에 선택적 인수 표시가 잘못되었네요.
weekday에 정수형(1~7) 을 입력하면 요일명을 반환합니다.
abbreviate는 True, False(기본값) 값을 가지며 True 설정 시 요일명의 반환을 약어로 합니다.(일, 월, 화, ... 토)

예제
Debug.Print WeekdayName(Weekday(Now))




DateAdd 함수

설명
지정된 시간 간격을 추가한 날짜를 반환합니다.

구문
DateAdd(interval, number, date)

각 인수가 가지는 설명자료는 MSDN을 참고하세요.
서점에서 도서를 대여할때 대여한 날짜로부터 몇일 이내에 반납해야하는 반납예정일을 구할때.. 이런경우 사용되어지겠네요.

예제
Debug.Print DateAdd("d", 1, Now)    '오늘날짜에 1일 더하기 반환
Debug.Print Now + 1




DateDiff 함수

설명
두 날짜 사이의 간격 수를 반환합니다.

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

각 인수는 날짜함수가 거의 동일하므로 한번쯤 읽어봐 두시면 눈에 익습니다.
서점에서 반납예정일을 넘어 반납하는 경우 연체한 날짜를 구할때 쓰일 수 있겠네요.
설명을 풀어써 보자면 
두 날짜(date2 - date1) 사이의 간격(interval) 수를 반환합니다. 고로 앞에오는 date1이 클 경우 음수가 나오게 됩니다.
단순하게 차이만을 구하려면 반환되는 값에 Abs(절대값)함수를 적용하면 되겠죠?

예제
Debug.Print DateDiff("d", Now, Now + 1)




DateSerial 함수

설명
지정된 년, 월, 일의 Date 하위 형식인 Variant를 반환합니다.

구문
DateSerial(year, month, day)

지정한 각 인수의 상대적인 날짜를 구할 수 있습니다. 아래 링크 참고


예제
Debug.Print DateSerial(2013, 3, 1 - 1)    '결과는 2013-02-28




TimeSerial 함수

설명
지정된 시, 분, 초의 Date 하위 형식인 Variant를 반환합니다.

구문
TimeSerial(hour, minute, second)

지정한 각 인수의 상대적인 시간을 구할 수 있습니다. DateSerial과 비슷하죠?

예제
Debug.Print TimeSerial(18, 0 + 5, 0)   '결과는 오후 6:05:00




DatePart 함수

설명
주어진 날짜의 지정된 부분을 반환합니다.

구문
DatePart(interval, date[, firstdayofweek[, firstweekofyear]])

잘 사용하지는 않지만 있다는 정도는 알고 넘어갑시다.

예제
     Debug.Print DatePart("q", Now)    '분기
Debug.Print DatePart("d", Now)    '날짜
Debug.Print Day(Now)                 '같은 표현식(대부분 이렇게 쓰죠) Year, Month, Day, Hour, Minute, Second




위에 나열한 함수 외에 DateValue, TimeValue 함수 등이 있고 이런 함수도 있다더라 정도만 아시면 되겠습니다.


Tip.
Format 함수를 사용하여 날짜표시 형식을 변경할 수 있습니다.

예제
Debug.Print Format(Now, "YYYY-MM-DD HH:NN:SS")

날짜함수중 DateSerial과 DateAdd 함수를 이용하여 해당월에 마지막 날짜을 알아오는 방법을 알아보겠습니다.

MSDN 자료를 보면


DateSerial 함수

지정된 년, 월, 일의 Variant(Date) 값을 반환합니다.


구문

DateSerial(year, month, day)

DateSerial 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.


 구성 

설명 

 year

필수. Integer. 100에서 9999 까지의 수 또는 수식

 month

필수. Integer. 모든 수식

 day

필수. Integer. 모든 수식

참고

예를 들어 1991년 12월 31일처럼 어떤 날짜를 지정하려면 각 DateSerial 인수의 숫자는 해당 인수의 허용 범위 안에 있어야 합니다. 즉, 일은 1 – 31이며, 월은 1 - 12입니다. 그러나 특정 날짜의 앞 뒤에 년, 월, 일 등을 나타내는 수식을 사용하여 각 인수의 상대 날짜를 지정할 수 있습니다.

다음은 특정 일자를 지정하지 않고 수식을 사용한 예제입니다. DateSerial 함수는 1990의 10년 전(1990-10) 8월의 2개월 전(8-2) 첫째 날에서 하루를 뺀(1-1), 즉 1980년 5월 31일을 반환합니다.

DateSerial(1990 - 10, 8 - 2, 1 - 1)

year 인수의 값이 0–99 사이의 값이면 1900부터 1999년까지로 해석되며 그 밖의 모든 year 인수는 1800년처럼4 자릿수의 완전한 연도를 사용합니다.

인수가 허용되는 범위를 넘으면 적절한 상위 단위로 변환하여 계산합니다. 예를 들어 35일을 지정하면 적용 연도에 따라 1개월 며칠로 계산합니다. 그러나 한 인수가 -32,768 - 32,767 범위를 넘는 인수이거나 세 인수를 사용하여 지정된 날짜가 허용 범위를 넘을 경우 오류가 발생합니다.


DateAdd 함수

특정 시간 간격을 포함한 Variant(Date) 값을 반환합니다.


구문

DateAdd(interval, number, date)

DateAdd 함수 구문은 다음과 같은 명명된 인수로 되어 있습니다.


 구성 요소

설명 

 interval

필수. 문자식을 사용하여 시간 간격을 표시합니다.

 number

필수. 수식을 사용하여 날짜에 시간 간격을 가감합니다. 양수(이후 시간을 계산하는 경우)와 음수(이전 시간을 계산하는 경우) 모두 사용 가능합니다.

 day

필수. Variant(Date) 형의 날짜에는 시간 간격이 가감됩니다.


설정

interval 인수의 설정은 다음과 같습니다.


 구성 

설명 

 yyyy 연도
 q 분기 
 m

 y 일(일년 기준) 
 d 일 
 w

요일

 ww 주 
 h

시간

 n 분 
 s


참고

날짜에 특정 시간을 더하거나 뺄 때 DateAdd 함수를 사용합니다. 예를 들어 현재 시간부터 45분 이후 시간이나 현재 일로부터 30일 이후의 날짜를 계산할 때 DateAdd 함수를 사용합니다.

date에 날짜를 더할 때 연("y"), 일("d")이나 요일("w")을 사용합니다.

DateAdd 함수는 틀린 날짜 값은 반환하지 않습니다. 다음은 95년 1월 31일에 1개월(30일)을 더한 예제입니다.

DateAdd("m", 1, "95 1 31")

위의 경우 DateAdd 함수는 95년 2월 31일이 아닌 95년 2월 28일을 반환합니다. date가 96년 1월 31일인 경우는 윤년이기 때문에 96년 2월 29일을 반환합니다.

계산한 날짜가 100년을 넘어가면 오류가 발생합니다. 실제 date보다 많은 연도를 가감했기 때문입니다.

number가 Long 값이 아니면 가까운 정수값으로 반올림한 후 계산합니다.

메모 DateAdd 함수의 반환값 형식은 date 인수에 전달된 형식 대신 [제어판] 설정에 의해 결정됩니다.



먼저 DateSerial 함수를 살펴보겠습니다.

예제에서와 같이 인수가 허용하는 범위를 넘으면 적절한 상위단위로 변환하여 계산한다고 하는 설명이 있는데 이를 이용하여 

2013년 02월 달의 마지막일을 구하려는 수식은

DateSerial(2013, 3, 1 - 1)    '결과는 2013-02-28 

즉 매월 0일은 계산식에 의해 이전달의 마지막일을 구할 수 있음을 알 수 있습니다.


다음으로 DateAdd 함수를 보면

날짜를 더하거나 뺄때 사용하는 함수로 이도 마찬가지로 마지막일을 구하려는 다음월을 인수로 하여 1일을 빼면 동일한 결과를

얻을 수 있습니다.

DateAdd("d", -1, "2012-03-01")    '결과는 2013-02-28 


+ Recent posts