DB/명령프롬프트 - mysql

[MySQL] SQL 내장함수 : 날짜함수

congs 2023. 3. 27. 12:49

SQL 날짜함수

 

Adddate / subdate : 날짜를 기준으로 ~후, ~전의 날짜

  • adddate(날짜, interval 7 day) : 택배에서 많이 사용
  • adddate(날짜, interval 1 month)
  • adddate(날짜, interval 2 year)
  • interval 뒤쪽의 값 = year, month, day, hour, minute, second

 

curdate() : 오늘 날짜 / curtime() : 오늘 시간 

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2023-03-27 |
+------------+
1 row in set (0.00 sec)

mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 12:36:33  |
+-----------+
1 row in set (0.00 sec)

 

now() / sysdate() : 오늘 날짜 시간

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2023-03-27 12:36:39 |
+---------------------+
1 row in set (0.00 sec)

mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2023-03-27 12:36:46 |
+---------------------+
1 row in set (0.00 sec)

 

addtime / subtime : 시간을 더하고 뺀 결과

  • addtime('날짜/시간', '시:분:초' )
mysql> select addtime(now(),'1:0:0');
+------------------------+
| addtime(now(),'1:0:0') |
+------------------------+
| 2023-03-27 13:39:32    |
+------------------------+
1 row in set (0.00 sec)

 

year(날짜시간) : 년 추출 , month(날짜시간) : 월 추출, day(날짜시간) : 일 추출

hour(날짜시간) : 시간 추출, minute(날짜시간) : 분 추출, second(날짜시간) : 초 추출

 

date(날짜시간) : 날짜 추출 / time(날짜시간) : 시간 추출

mysql> select time(now());
+-------------+
| time(now()) |
+-------------+
| 12:43:27    |
+-------------+
1 row in set (0.00 sec)

 

 

datediff(날짜1, 날짜2) / timediff(시간 또는 날짜/시간, 날짜) : 남은 날짜, 시간  반환

  • 디데이에 많이 활용
  • 날짜2에서 날짜1까지 남은 날짜/시간 반환
mysql> select datediff('2023-08-07',now());
+------------------------------+
| datediff('2023-08-07',now()) |
+------------------------------+
|                          133 |
+------------------------------+
1 row in set (0.00 sec)

 

dayofweek (날짜) : 요일 (일=1, 월=2..)

mysql> select dayofweek(now());
+------------------+
| dayofweek(now()) |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

 

monthname(날짜): 월의 영어이름 출력

dayofyear(날짜): 1년중 며칠이 경과 했는지 반환

last_day(날짜): 말일 반환

time_to_sec(시간): 시간을 초단위로 반환

 

 

date_format(날짜, '%y-%m') : 년-월 만 추출

  • y는 년이 2자리로 표기, Y의 경우 년이 4자리로 표기
mysql> select date_format(register_data,'%Y-%m') as '날짜', sum(sale_amount) as '월별 판매량 합계'
    -> from product
    -> group by date_format(register_data,'%Y-%m')
    -> order by date_format(register_data,'%Y-%m');
+---------+------------------+
| 날짜    | 월별 판매량 합계 |
+---------+------------------+
| 2020-09 |              306 |
| 2020-10 |              130 |
| 2020-11 |              209 |
+---------+------------------+
3 rows in set (0.00 sec)