1. SQL 구문
날짜값이 포함된 MSSQL 쿼리문을 작성한다.
1
2
3
4
5
6
7
|
SELECT A1, CONVERT(varchar(10), a.updated_at, 20) AS date,
CONVERT(varchar(10), DATEPART(dw, a.updated_at)) AS dayOfWeek FROM absolute AS a
JOIN ....
ON ....
WHERE .....
GROUP BY CONVERT(varchar(10), a.updated_at, 20), DATEPART(dw, a.updated_at)
ORDER BY CONVERT(varchar(10), a.updated_at, 20);
|
cs |
2. CONVERT(포맷(길이), 날짜값, 형식)
날짜값 변환은 CONVERT 구문으로 할 수 있다.
select convert(varchar(20), getdate(), 20)
-> 2021-06-08 12:59:39
select convert(varchar(10), getdate(), 20)
-> 2021-06-08
select convert(varchar(20), getdate(), 10)
-> 06-08-21
select convert(varchar(20), getdate(), 11)
-> 21/06/08
...
자세한 내용은 참조 1)
3. DATEPART(datepart, date)
DATEPART문을 통해서 날짜의 연, 월, 일, 요일 등 특정값을 반환할 수 있다. 이중 weekday는 dayOfWeek, 즉 일요일 = 1 부터 토요일 = 7까지 해당하는 요일의 숫자를 가져온다.
자세한 내용은 참조 2)
참고로 MYSQL 에서는 DATE_FORMAT 구문을 사용한다!
아래 표에서의 FORMAT을 지정하여 날짜의 특정값을 뽑아낸다. 자세한 내용은 참조3)
DATE_FORMAT(NOW(),'%Y-%m-%d')
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
4. GROUP BY as alias
SELECT 구문에서 정의한 날짜값들의 별칭(alias, date, dayOfWeek)을 GROUP BY 구문에서 작성할 수 없다. 그래서 그대로 작성해주었다. 이것은 참조 3)에 따르면, SQL 구문 해석은 아래와 같은 순서로 진행되기 때문에, 먼저 해석되는 GROUP BY 구문에서 뒤에 해석되는 SELECT 구문의 alias를 참조할 수 없기 때문이다.
-SQL 문의 해석 순서
- FROM clause
- WHERE clause
- GROUP BY clause
- HAVING clause
- SELECT clause
- ORDER BY clause
5. 참조
1) CONVERT 구문 설명
2) DATEPART
https://docs.microsoft.com/ko-kr/sql/t-sql/functions/datepart-transact-sql?view=sql-server-ver15
3) MYSQL - DATE_FORMAT
https://lovelyjk.tistory.com/63
4) GROUP BY - SQL문 해석 순서
https://docs.microsoft.com/ko-kr/sql/t-sql/functions/datepart-transact-sql?view=sql-server-ver15
'Programming-[Backend] > Database' 카테고리의 다른 글
[TIL][PostgreSQL][에러] : connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused (0x0000274D/10061) Is the server running on that host and accepting TCP/IP connections? (0) | 2022.01.20 |
---|---|
[TIL] MSSQL like 구문 한글 검색 (0) | 2021.06.15 |
트랜잭션이란 2. 트랜잭션의 성질 (0) | 2021.05.02 |
트랜잭션이란 1. 기본 개념 (0) | 2021.05.02 |
MySQL / 비밀번호 변경 / Access denied for 'root' ...문제 해결 (0) | 2020.10.25 |