서버 현재 날짜, 시간 반환하기: GETDATE, SYSDATETIME 함수
GETDATE : 소수 3째 자리까지
SYSDATETIME: 소수 7째 자리까지 시간 표현
SELECT GETDATE(), SYSDATETIME()
결과
(열 이름 없음) (열 이름 없음)
2022-12-02 13:58:39.487 2022-12-02 13:58:39.4886374
서버 현재 UTC 날짜, 시간 반환하기: GETUTCDATE, SYSUTCDATETIME 함수
UTC: 협정 세계시(Uinversial Time Coordinated)
SELECT GETDATE(), GETUTCDATE(),SYSUTCDATETIME()
결과
(열 이름 없음) (열 이름 없음) (열 이름 없음)
2022-12-02 14:01:20.000 2022-12-02 05:01:20.000 2022-12-02 05:01:20.0034682
날짜 더하기: DATEADD 함수
날짜를 더하거나 뺴려면 DATEADD 함수를 사용한다. DATEADD 함수는 날짜 형식(datepart), 숫자(number), 더하거나 뺄 대상 날짜(date)를 인자로 받는다.
날짜 가감: DATEADD 함수 |
DATEADD(datepart, number, date) |
SELECT GETDATE(), DATEADD(year, 1, GETDATE()), DATEADD(year, -1, GETDATE())
→ 현재 날짜에서 year 부분만 1년 더한 것과 1년 뺀 결과를 반환
(열 이름 없음) (열 이름 없음) (열 이름 없음)
2022-12-02 14:07:02.617 2023-12-02 14:07:02.617 2021-12-02 14:07:02.617
날짜 차이 구하기:. DATEDIFF 함수
날짜 형식(datepart), 시작 날짜(startdate), 종료 날짜(startdate)를 인자로 받는다.
날짜 차이 반환: DATEDIFF 함수 |
DATEDIFF(datepart, startdate, startdate) |
SELECT DATEDIFF(year, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(quarter, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(month, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(dayofyear, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(day, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(week, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(hour, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(minute, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(second, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(millisecond, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
SELECT DATEDIFF(microsecond, '2019-12-31 23:59:59.9999999', '2021-01-01 00:00:00.0000000');
결과
year: 2
quarter: 5
month: 13
dayofyear: 267
day: 367
week: 52
hour: 8785
minute: 527041
second: 31622401
지정된 날짜 일부 반환하기:. DATEPART, DATENAME 함수
보고서에 연월일만 표시할 수 있다.
날짜 일부 반환: DATEPART, DATENAME 함수 |
DATEPART(datepart, date) |
DATENAME(datepart, date) |
DATEPART 함수는 반환값이 월요일이라면 1을,
DATENAME 함수는 반환값이 월요일이라면 월요일을 그대로 반환한다.
SELECT symbol, last_crawel_date,
DATEPART(year, last_crawel_date),
DATEPART(month, last_crawel_date),
DATEPART(day, last_crawel_date),
DATEPART(weekday, last_crawel_date)
FROM nasdaq_company
결과
symbol last_crawel_date (열 이름 없음) (열 이름 없음) (열 이름 없음) (열 이름 없음)
^CMC 200 2021-11-05 00:00:00.000 2021 11 5 6
^DJI 2021-11-05 00:00:00.000 2021 11 5 6
^FTSE 2021-11-05 00:00:00.000 2021 11 5 6
^GSPC 2021-11-05 00:00:00.000 2021 11 5 6
^IXIC 2021-11-05 00:00:00.000 2021 11 5 6
^N225 2021-11-02 00:00:00.000 2021 11 2 3
SELECT symbol, last_crawel_date,
DATENAME(year, last_crawel_date),
DATENAME(month, last_crawel_date),
DATENAME(day, last_crawel_date),
DATENAME(weekday, last_crawel_date)
FROM nasdaq_company
결과
symbol last_crawel_date (열 이름 없음) (열 이름 없음) (열 이름 없음) (열 이름 없음)
^CMC 200 2021-11-05 00:00:00.000 2021 11 5 금요일
^DJI 2021-11-05 00:00:00.000 2021 11 5 금요일
^FTSE 2021-11-05 00:00:00.000 2021 11 5 금요일
^GSPC 2021-11-05 00:00:00.000 2021 11 5 금요일
^IXIC 2021-11-05 00:00:00.000 2021 11 5 금요일
^N225 2021-11-02 00:00:00.000 2021 11 2 화요일
날짜에서 일, 월, 연도 가져오기: DAY, MONTH, YEAR 함수
SELECT symbol, last_crawel_date,
YEAR(last_crawel_date),
MONTH(last_crawel_date),
DAY(last_crawel_date)
FROM nasdaq_company
결과
symbol last_crawel_date (열 이름 없음) (열 이름 없음) (열 이름 없음)
AACG 2021-11-05 00:00:00.000 2021 11 5
AACIU 2021-11-05 00:00:00.000 2021 11 5
AACQ 2021-06-24 00:00:00.000 2021 6 24
AACQU 2021-06-24 00:00:00.000 2021 6 24
AACQW 2021-06-24 00:00:00.000 2021 6 24
AADI 2021-11-05 00:00:00.000 2021 11 5
AAIC 2021-11-05 00:00:00.000 2021 11 5
날짜 자료형 또는 형태 변환하기: CONVERT 함수
YYYY-MM-DD hh:mm:ss.sss 형태를 YY/MM/DD 형태로 변환할 수 있다.
SELECT symbol, last_crawel_date,
CONVERT(nvarchar(10), year(last_crawel_date)) + '/' +
CONVERT(nvarchar(10), month(last_crawel_date)) + '/' +
CONVERT(nvarchar(10), day(last_crawel_date))
FROM nasdaq_company
결과
symbol last_crawel_date (열 이름 없음)
^CMC200 2021-11-05 00:00:00.000 2021/11/5
^DJI 2021-11-05 00:00:00.000 2021/11/5
^FTSE 2021-11-05 00:00:00.000 2021/11/5
^GSPC 2021-11-05 00:00:00.000 2021/11/5
^IXIC 2021-11-05 00:00:00.000 2021/11/5
^N225 2021-11-02 00:00:00.000 2021/11/2
^RUT 2021-11-05 00:00:00.000 2021/11/5
스타일 매개변수를 사용하면 쉽게 변경할 수 있다.
SELECT CONVERT(NVARCHAR(20), last_crawel_date, 120) FROM nasdaq_company
2021-11-05 00:00:00
SELECT CONVERT(NVARCHAR(20), last_crawel_date, 111) FROM nasdaq_company
2021/11/05
SELECT CONVERT(NVARCHAR(20), last_crawel_date, 112) FROM nasdaq_company
20211105
날짜 포맷표
포맷 번호 값 | 작성 형식 | 결과 |
1 | select covnert(varchar, getdate(), 1) | mm/dd/yy |
2 | select covnert(varchar, getdate(), 2) | yy.mm.dd |
... | ||
111 | select covnert(varchar, getdate(), 111) | yyyy/mm/dd |
112 | select covnert(varchar, getdate(), 112) | yyyymmdd |
시간 포맷 표
포맷 번호 값 | 작성 형식 | 결과 |
1 | select covnert(varchar, getdate(), 8) | hh:mm:ss |
2 | select covnert(varchar, getdate(), 14) | hh:mm:ss:nnn |
... | ||
114 | select covnert(varchar, getdate(), 114) | hh:mm:ss:nnn |
퀴즈 2. 현재 날짜에서 45일 이전의 날짜와 요일을 구하세요.
SELECT CONVERT(NVARCHAR(10), DATEADD(day, -45, GETDATE()), 111) AS DATE,
DATENAME(WEEKDAY, DATEADD(day,-45, GETDATE())) AS DATE_NAME
결과
DATE DATE_NAME
2022/10/18 화요일
'IT Story > SQL Story' 카테고리의 다른 글
SQL 함수: 수학 함수 (0) | 2022.12.05 |
---|---|
SQL 함수: 집계 함수 (0) | 2022.12.05 |
SQL 함수: 문자열 함수 (0) | 2022.12.02 |
공통 테이블 식(Common Table Expression, CTE) (0) | 2022.12.01 |
서브 쿼리 (0) | 2022.11.30 |