반응형
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
반응형
'MySql' 카테고리의 다른 글
MySQL 서버가 잘못된 시간대를 반환합니다. 고급 탭으로 이동하여 수동으로 servertimezone 속성 설정 (0) | 2020.10.11 |
---|---|
MySQL mysqldump 액세스가 거부되었습니다. (0) | 2020.10.11 |
MySQL 제한 범위 (0) | 2020.10.11 |
MySQL Chrome 확장 프로그램에서 DB에 연결 하시겠습니까? (0) | 2020.10.11 |
MySQL 테이블에서 중복 행을 삭제하는 방법 (0) | 2020.10.11 |
댓글