0
는테이블의 필드에 따라 date_add 간격 유형을 변경하는 방법은 무엇입니까?
- TF_wk => WEEK
- TF_mon => MONTH
+-------------------+-----------------+---------------------+ | INTERVAL_QUANTITY | INTERVAL_UOM_ID | LAST_UPDATED_STAMP | +-------------------+-----------------+---------------------+ | 10 | TF_wk | 2017-10-31 17:21:40 | | 20 | TF_mon | 2017-10-30 17:21:40 | | 30 | TF_day | 2017-10-29 17:21:40 | +-------------------+-----------------+---------------------+
키, (이것은 다른 행하지만 쿼리에 사용되는 아래의 사람이있다) 다음 표를 상상해
- TF_day => DAY
지금, 나는 다음과 같은 쿼리를 가지고
SELECT
*
FROM
product_maint
WHERE
(INTERVAL_UOM_ID = 'TF_day' OR INTERVAL_UOM_ID = 'TF_wk' OR INTERVAL_UOM_ID = 'TF_mon')
AND DATEDIFF(DATE(DATE_ADD(LAST_UPDATED_STAMP, INTERVAL INTERVAL_QUANTITY DAY)), DATE(NOW())) <= 0;
문제는 마찬가지로 때하는 TF_wk
의 INTERVAL_UOM_ID
하고 실제로 70
일에 추가해야합니다 10
의 INTERVAL_QUANTITY
하지 10
일이있는 행을 선택 때, INTERVAL_UOM_ID
이 TF_mon
이고 INTERVAL_QUANTITY
이 20
인 경우 560
일을 추가해야합니다 (내 수학이 정확하다고 가정).
어떻게하면이 로직을 구현할 수 있습니까?
위의 쿼리를 사용하여 어떤 이유로 든 모든 행을 표시하고 논리가 어딘가에 깨졌습니다. – Script47
'TF_ *'체크와 DATE 체크를 결합하는 논리를 사용하면 비교 방법을 사용할 때 저에게 효과적이었습니다. 그래서 기본적으로' \t product_maint 로부터 \t * 을 선택 WHERE \t (INTERVAL_UOM_ID = 'TF_day' \t 및 DATEDIFF (DATE (DATE_ADD (LAST_UPDATED_STAMP, 간격 INTERVAL_QUANTITY DAY)), DATE (NOW())) <= 0) OR ( \t INTERVAL_UOM_ID = 'TF_wk' \t AND DATEDIFF (DATE_ADD (DATE (LAST_UPDATED_STAMP) INTERVAL INTERVAL_QUANTITY WEEK) DATE (NOW())) <= 0) OR (INTERVAL_UOM_ID = 'TF_mon' \t AND DATEDIFF (DATE (DATE_ADD (LAST_UPDATED_STAMP, INTERVAL INTERVAL_QUANTITY MONTH)), DATE (NOW())) <= 0); – Script47