我正在嘗試選擇日期大于或等于上周日晚上 8 點的所有行。因此,如果現在是周日晚上 7 點,則選擇將包含幾乎一整周的資料。如果現在是星期天晚上 9 點,則選擇將包含大約一個小時的資料。
所以下面的查詢不是我感興趣的,因為它不是在周日晚上 8 點開始和結束的。
SELECT * FROM table WHERE date >= DATE_SUB(NOW(), INTERVAL 1 WEEK)
我不確定如何撰寫正確的查詢。
uj5u.com熱心網友回復:
當您的條件匹配時,您可以使用 cast 陳述句來調整邏輯。
相應地更改時間間隔。我沒有添加秒數,所以這兩個條件都需要晚上 8 點的資料。
SELECT * FROM table
WHERE date >= select CASE WHEN (DAYOFWEEK(NOW()) = 1 AND CURTIME() >= '20:00:00') THEN DATE(NOW()) INTERVAL 20 HOUR
WHEN (DAYOFWEEK(NOW()) = 1 AND CURTIME() <= '20:00:00') THEN DATE_ADD(DATE_SUB(DATE(NOW()), INTERVAL DAYOFWEEK(NOW()) 6 DAY), interval 20 hour)
ELSE DATE_ADD(DATE_SUB(DATE(NOW()), INTERVAL DAYOFWEEK(NOW())-1 DAY), interval 20 hour) END
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/493857.html
標籤:mysql
