DataBase/MsSql
MSSQL 날짜함수,시간함수 사용법 정리 및 설명
아우럼
2024. 4. 14. 19:00
반응형
MSSQL에는 다양한 날짜함수 하고 시간함수를 지원하므로 사용법에 대해서 설명합니다.
날짜함수, 시간함수 특징
- 데이터베이스에서 날짜와 시간을 추출, 계산, 변환하는 데 유용하게 활용됩니다.
- 날짜함수와 시간함수를 원하는 형태로 변환할 수 있어야 합니다.
날짜함수, 시간함수 사용법 및 설명
ISDATE() 함수.
- 날짜함수로 변환 가능하지 체크할 때 사용합니다.
- 매개변수의 값이 날짜 형태인 경우 '1'을 반환하지만 날짜가 아닌 경우 '0'을 반환합니다.
-- ISDATE() function.
SELECT ISDATE(GETDATE()) AS dateCheckIsOk
,ISDATE('NoDate') AS dateCheckIsNo
;
GETDATE() 함수.
- database 세팅된 현재 시스템의 날짜와 시간을 반환하는 함수입니다.
- 비결정적인 함수로 호출할 때마다 시스템 시간을 기반으로 현재 값을 return 합니다.
- 자주 사용하지는 않지만 GETUTCDATE() , SYSDATETIME() , SYSDATETIMEOFFSET() , SYSUTCDATETIME() , CURRENT_TIMESTAMP 함수도 확인하세요.
-- GETDATE() function.
SELECT GETDATE()
,GETUTCDATE()
,SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
;
YEAR(), MONTH(), DAY() 함수.
- YEAR() 함수는 입력한 날짜에서 연도를 반환합니다.
- MONTH() 함수는 입력한 날짜에서 월을 반환합니다.
- DAY() 함수는 입력한 날짜에서 일을 반환합니다.
-- YEAR(),MONTH(),DAY() 함수
SELECT GETDATE() AS 'FULL_DATE'
,YEAR(GETDATE()) AS 'YEAR'
,MONTH(GETDATE()) AS 'MONTH'
,DAY(GETDATE()) AS 'DAY'
;
DATEPART(), DATENAME() 함수.
- DATEPART(), DATENAME() 함수는 날짜 데이터로부터 연도, 월, 일, 시, 분, 초, 요일, 분기, 일 년 중 며칠인지, 일 년 중에서 몇 주인지 추출하는 데 사용됩니다.
-- 2024-04-13 23:39:33.260
SELECT DATEPART(YEAR, GETDATE()) AS 'DATEPART_연도'
,DATENAME(YEAR, GETDATE()) AS 'DATENAME_연도'
,DATEPART(MONTH, GETDATE()) AS 'DATEPART_월'
,DATENAME(MONTH, GETDATE()) AS 'DATENAME_월'
,DATEPART(DAY, GETDATE()) AS 'DATEPART_일'
,DATENAME(DAY, GETDATE()) AS 'DATENAME_일'
,DATEPART(HOUR, GETDATE()) AS 'DATEPART_시'
,DATENAME(HOUR, GETDATE()) AS 'DATENAME_시'
,DATEPART(MINUTE, GETDATE()) AS 'DATEPART_분'
,DATENAME(MINUTE, GETDATE()) AS 'DATENAME_분'
,DATEPART(SECOND, GETDATE()) AS 'DATEPART_초'
,DATENAME(SECOND, GETDATE()) AS 'DATENAME_초'
,DATEPART(WEEKDAY, GETDATE()) AS 'DATEPART_요일'
,DATENAME(WEEKDAY, GETDATE()) AS 'DATENAME_요일'
,DATEPART(QUARTER, GETDATE()) AS 'DATEPART_분기'
,DATENAME(QUARTER, GETDATE()) AS 'DATENAME_분기'
,DATEPART(DAYOFYEAR, GETDATE()) AS 'DATEPART_일년_일수'
,DATENAME(DAYOFYEAR, GETDATE()) AS 'DATENAME_일년_일수'
,DATEPART(WEEK, GETDATE()) AS 'DATEPART_일년_주'
,DATENAME(WEEK, GETDATE()) AS 'DATENAME_일년_주'
;
DATEADD() 함수.
- 날짜나 시간에 대해 연산할 때 사용하는 함수입니다.
- 날짜에 지정된 간격을 더하거나 빼는 데 주로 사용합니다.
- 함수 형태는 DATEADD(datepart, number, inputDate)입니다.
- datepart는 시간 간격을 지정합니다. 예를 들면 'year’은 년을 나타냅니다.
- number는 더하거나 뺄 값입니다.
- inputDate는 기준이 되는 날짜입니다.
/*
DATEADD() function
년도(Year or yy)
월(Month or mm)
일자(Day or dd)
주(Week or ww)
시 분 초 (Hour, Minute, Second)
*/
SELECT DATEADD(YEAR, 2, GETDATE()) AS 'GETDATE에서 2년 뒤 날짜'
,DATEADD(yy, -2, GETDATE()) AS 'GETDATE에서 2년 전 날짜'
,DATEADD(MONTH, 3, GETDATE()) AS 'GETDATE에서 3개월 뒤 날짜'
,DATEADD(mm, -5, GETDATE()) AS 'GETDATE에서 5개월 전 날짜'
,DATEADD(DAY, 5, GETDATE()) AS 'GETDATE에서 5일 뒤 날짜'
,DATEADD(dd, -8, GETDATE()) AS 'GETDATE에서 8일 전 날짜'
,DATEADD(WEEK, 1, GETDATE()) AS 'GETDATE에서 1주 뒤 날짜'
,DATEADD(ww, -2, GETDATE()) AS 'GETDATE에서 2주 전 날짜'
,DATEADD(HOUR, 8, GETDATE()) AS 'GETDATE에서 8시간 뒤 시간'
,DATEADD(MINUTE, -70, GETDATE()) AS 'GETDATE에서 70분 전 시간'
,DATEADD(SECOND, 20, GETDATE()) AS 'GETDATE에서 20초 뒤 시간'
;
DATEDIFF() 함수.
- 함수의 형태는 DATEDIFF(datepart, startDate, endDate)입니다.
- 날짜를 비교하고 DATEPART 구분자에 따라 차이를 계산하여 결과를 정수로 반환합니다.
- datepart는 시간 간격을 지정합니다. 예를 들어, 'month’는 월을 나타냅니다.
- startDate는 시작 날짜입니다.
- endDate는 종료 날짜입니다.
/*
-- DATEDIFF() 함수
DAY: 일 수를 반환.
MONTH: 월이 바뀐 횟수를 반환.
YEAR: 년이 바뀐 횟수를 반환.
*/
SELECT DATEDIFF(DAY ,DATEADD(YEAR, -2, GETDATE()), GETDATE()) AS '일 수를 반환'
,DATEDIFF(MONTH ,DATEADD(YEAR, -2, GETDATE()), GETDATE()) AS '월이 바뀐 횟수를 반환'
,DATEDIFF(YEAR ,DATEADD(YEAR, -2, GETDATE()), GETDATE()) AS '년이 바뀐 횟수를 반환'
;
날짜함수, 시간함수 마무리
DATEPART 표시 방법.
구분 | DATEPART(full) | DATEPART(short) |
년도 | YEAR | YYYY,YY |
월 | MONTH | MM, M |
일자 | DAY | DD, D |
시간 | HOUR | HH |
분 | MINUTE | MI, N |
초 | SECOND | SS, S |
MILLI | MILLISECOND | MS |
주 단위 | WEEK | WK |
분기 단위 | QUARTER | QQ, Q |
반응형