본문 바로가기
MySql

MySQL 필드를 간격으로 사용하는 mysql date_sub

by 베이스 공부 2020. 10. 11.
반응형

mysql 및 date_sub ()에 대한 도움이 필요합니다. 테이블 호출 활동이 있습니다.

Activity(id,deadline,alert)
Activity(1,'2011-04-18','1 DAY');
Activity(2,'2011-04-13','1 MONTH');

A의 모든 행에는 '경고'가 있으며,이 필드는 활동이 기한까지보고해야하는 시간을 나타냅니다.

예를 들면

date_sub () 함수를 사용하려고하는데이 함수의 매개 변수로 필드를 사용할 수 없습니다. 이 문제를 해결하는 방법을 아십니까?

SELECT * 
  FROM `activities` 
 WHERE date_sub(`deadline`, INTERVAL alert) >= CURDATE();

 

해결 방법

 

경고를 2 개의 필드로 분할

Alert_count: integer
Alert_period: enum('hour','day','month','week')

다음과 같이 쿼리를 변경합니다.

SELECT * 
  FROM `activities` 
 WHERE CASE alert_period 
   WHEN 'hour' THEN date_sub(`deadline`, INTERVAL alert_count HOUR) >= CURDATE();
   WHEN 'day' THEN date_sub(`deadline`, INTERVAL alert_count DAY) >= CURDATE();
   ...
 END CASE

 

참조 페이지 https://stackoverflow.com/questions/5767144

 

 

반응형

댓글