1.3 시간/날짜 및 기타 함수 

박재현·2022년 2월 26일
0
post-custom-banner

시간/날짜 관련 함수들

  • CURRENT_DATA, CURDATE : 현재 날짜 반환
  • CURRENT_TIME, CURTIME : 현재 시간 반환
  • CURRENT_TIMESTAMP, NOW : 현재 시간과 날짜 반환
SELECT CURDATE(), CURTIME(), NOW();

MySQL은 DATE, TIME 함수 내에서 쓰이는 것만 해당 날짜와 시간으로 인지

SELECT
  '2021-6-1' = '2021-06-01',
  DATE('2021-6-1') = DATE('2021-06-01'),
  '1:2:3' = '01:02:03',
  TIME('1:2:3') = TIME('01:02:03');

SELECT
  '2021-6-1 1:2:3' = '2021-06-01 01:02:03',
  DATE('2021-6-1 1:2:3') = DATE('2021-06-01 01:02:03'),
  TIME('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
  DATE('2021-6-1 1:2:3') = TIME('2021-06-01 01:02:03'),
  DATE('2021-6-1') = DATE('2021-06-01 01:02:03'),
  TIME('2021-6-1 1:2:3') = TIME('01:02:03');

SELECT * FROM Orders
	WHERE OrderDate
    BETWEEN DATE('1997-1-1') AND DATE('1997-1-31');

📌 Orders 테이블에서 OrderDate 날짜가 1997-1-1 ~ 1997-1-31 인 데이터


함수이므로 날짜 정보를 인자 안에 넣어서 사용
ex) WEEKDAY(날짜데이터)

SELECT
  OrderDate,
  YEAR(OrderDate) AS YEAR,
  MONTHNAME(OrderDate) AS MONTHNAME,
  MONTH(OrderDate) AS MONTH,
  WEEKDAY(OrderDate) AS WEEKDAY,
  DAYNAME(OrderDate) AS DAYNAME,
  DAY(OrderDate) AS DAY
FROM Orders;

SELECT * FROM Orders
	WHERE WEEKDAY(OrderDate) = 0;

📌 Orders 테이블에서 월요일(0)인 데이터만 출력
0: 월요일, 1: 화요일, 2: 수요일, 3:목요일, 4:금요일, 5:토요일, 6:일요일


SELECT
  HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());


📌 날짜/시간 더하기, 빼기 ( 유저 로그인 정보 만료 기한 )

SELECT 
  ADDDATE('2021-06-20', INTERVAL 1 YEAR),
  ADDDATE('2021-06-20', INTERVAL -2 MONTH),
  ADDDATE('2021-06-20', INTERVAL 3 WEEK),
  ADDDATE('2021-06-20', INTERVAL -4 DAY),
  ADDDATE('2021-06-20', INTERVAL -5 MINUTE),
  ADDDATE('2021-06-20 13:01:12', INTERVAL 6 SECOND);

SELECT OrderDate,
  ADDDATE(OrderDate, INTERVAL 1 YEAR),
  ADDDATE(OrderDate, INTERVAL -2 MONTH),
  ADDDATE(OrderDate, INTERVAL 3 WEEK),
  ADDDATE(OrderDate, INTERVAL -4 DAY),
  ADDDATE(OrderDate, INTERVAL -5 MINUTE)
	FROM Orders;


📌 두 시간/날짜 차이

SELECT
  OrderDate,
  NOW(),
  DATEDIFF(OrderDate, NOW())
FROM Orders;

📌 OrderDate과 현재 날짜/시간 과의 일 차이

SELECT
  TIMEDIFF('2021-06-21 15:20:35', '2021-06-21 16:34:41');

📌 두 시간의 차이

SELECT * FROM Orders
	WHERE
  ABS(DATEDIFF(OrderDate, '1996-10-10')) < 5;

📌 OrderDate 과 1996-10-10 일 차이의 절대값이 5보다 작은 데이터


SELECT
  OrderDate,
  LAST_DAY(OrderDate),
  DAY(LAST_DAY(OrderDate)),
  DATEDIFF(LAST_DAY(OrderDate), OrderDate)
FROM Orders;


SELECT
  DATE_FORMAT(NOW(), '%M %D, %Y %T'),
  DATE_FORMAT(NOW(), '%y-%m-%d %h:%i:%s %p'),
  DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %p %h시 %i분 %s초');

SELECT REPLACE(
  REPLACE(
    DATE_FORMAT(NOW(), '%Y년 %m월 %d일 %p %h시 %i분 %초'),
    'AM', '오전'
  ),
  'PM', '오후'
)


🙏 참조: https://www.yalco.kr/@sql/1-4/

post-custom-banner

0개의 댓글