2010-01-21 260 views
1

有一個查詢我的工作有比較日期

起始日期/ END_DATE在日期格式:YYYY-MM-DD

什麼樣的應該從這種查詢中預期結果?

+0

are start_date/end_date varchar columns? – nos 2010-01-21 21:33:39

回答

1

兩個起始日期日期和結束日期大於或等於今天的日期。

而不是使用DATE(now())可以使用CURRENT_DATE()的。

+0

它讓我覺得很奇怪,但它本身並不是不正確的。 (這可能只是未來的一件事。) – 2010-01-21 21:33:18

1

這種查詢應該預期哪種結果?

如果start_dateend_date是正確的MySQL日期字段,它應該只是罰款,並返回,其中起始日期日期和結束日期是當天的日期,或者在將來的某個日期的所有條目。

如果他們是VARCHAR字段,你可能要考慮轉換列插入日期字段 - 我假設值將繼續保持,但要理所當然的備份 - 或鑄造它們作爲日期字段(慢!):

WHERE CONVERT(start_date, DATE) => DATE(NOW()) AND CONVERT(end_date, DATE) => DATE(NOW()) 
0

您將比較日期(即未考慮時間)的粒度級別。即當天或晚於今天(NOW())的所有行,假設start_date和end_date是日期列。

0

這應該很好,因爲您可以在日期比較中使用NOW()。

但是,您不需要在DATE內包裝NOW() - 只要您使用與時間相關的其中一種時間(DATE,DATETIME,TIMESTAMP等)字段類型,它就會按原樣工作。

這樣,你就應該能夠使用...

WHERE start_date >= NOW() AND end_date >= NOW() 
0

這將工作,只要你包圍start_dateend_date單引號。它會給你所有記錄開始日期和結束日期在未來的記錄。