0
(それは他の行が、クエリで使用されて、以下に示すものを有している)は、以下の表を想像し、テーブル内のフィールドに応じてdate_add間隔タイプを変更するにはどうすればよいですか?
+-------------------+-----------------+---------------------+
| 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_wk => WEEK
- TF_mon => MONTH
- 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;
問題も同様に、それは10
のTF_wk
のINTERVAL_UOM_ID
とINTERVAL_QUANTITY
を持つ行を選択したときに、それは実際にはない10
日70
日に追加する必要があり、 INTERVAL_UOM_ID
はTF_mon
であり、INTERVAL_QUANTITY
は20
であり、それは560
日(すべての計算が正しいと仮定します)に追加する必要があります。
このロジックを実装するにはどうすればよいですか?
これは何らかの理由で上記のクエリを使用しているようですが、すべての行が表示され、ロジックがどこかに壊れていますか? – Script47
'TF_ *'チェックとDATEチェックを組み合わせるロジックを使用して、私の比較方法を使用したときに私のために働きました。だから、基本的には: ' \t product_maint FROM \t * をSELECT WHERE \t(INTERVAL_UOM_ID = 'TF_day' \tとDATEDIFF(DATE(DATE_ADD(LAST_UPDATED_STAMP、INTERVAL 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