簡體   English   中英

無法獲取日期時間小於系統日期的記錄

[英]Cannot get records with datetime less than system date

我想,以檢查是否記錄列表有datetime小於系統datetime ,這些記錄必須也有外地status平等為12 我所做的是以下幾點:

SELECT SUM(m2.datetime < NOW() AND m2.status IN (1, 2)) < 0 AS result 
FROM `match` m2 WHERE m2.round_id = @round_id GROUP BY m2.round_id

該查詢在以下情況下不起作用:

id | datetime              | status |
 1    2018-11-30 18:00:00      5
 2    2018-12-09 13:30:00      5
 3    2018-12-15 14:00:00      5
 4    2018-12-21 13:30:00      5
 5    2019-01-08 17:45:00      1

如您在上面顯示的記錄列表中所看到的,我有4條狀態為5記錄,所有這些記錄的日期都小於當前系統的datetime 現在,我還有一條狀態為1記錄,其日期時間小於當前日期,因此查詢結果應為true ,因為存在一條status1的記錄,且其datetime時間小於當前時間比系統datetime 為什么查詢返回false?

如果要計數,請刪除< 0

SELECT round_id, SUM(m2.datetime < NOW() AND m2.status IN (1, 2))AS result 
FROM `match` m2
WHERE m2.round_id = @round_id
GROUP BY m2.round_id

或者更好的是,將條件移到where子句:

SELECT COUNT(*) AS result 
FROM `match` m2
WHERE m2.round_id = @round_id AND
      m2.datetime < NOW() AND m2.status IN (1, 2)

比較永遠不會返回小於0的值,因為如果我正確理解了您想返回true的話,就不需要比較,而且我也看不到SUM的需要,因此我將查詢更改為

SELECT (m2.datetime < NOW() AND m2.status IN (1, 2)) AS result 
FROM `match` m2 WHERE m2.round_id = @round_id 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM