2010-08-26 165 views
2

在我的表格中日期的格式是"2010-08-26 09:00:00",所以yyyy-mm-dd。我想選擇日期字段爲「今天」的所有字段,因此在2010-08-26 00:00:012010-08-26 23:59:59之間。MySQL日期比較函數

只使用大於和小於運算符不起作用,MySQL是否有一些內置的日期比較函數可以做到這一點?

編輯:我應該提到的日期存儲爲datetime領域

+0

記錄的日期恰好是午夜? – 2010-08-26 11:17:28

+0

公平的,這實際上是一個內部規劃工具,只輸入辦公時間日期(不可能在上午8點之前和晚上8點之後添加)。我的「之間」價值觀可以反映出這一點,但它確實沒有什麼區別。 – stef 2010-08-26 11:19:21

+0

只是一個提示,MySQL中還有一個BETWEEN比較函數。它可以像這樣使用:WHERE my_date BETWEEN'2010-08-26 10:00:00'和'2010-08-26 12:00:00'。它不適用於這種情況,但因爲有更好的功能。 (BETWEEN適用於任何字符串,數字和日期) – dbemerlin 2010-08-26 11:27:07

回答

7
... WHERE DATE(field)=CURDATE() 

... WHERE DATE(field)=CURRENT_DATE 

... WHERE DATE(field)=CURRENT_DATE() 

選擇之一!

+0

只是爲了完美:我通常使用DATE(field)= DATE(NOW()),這可能會降低性能,但更容易記住。 – dbemerlin 2010-08-26 11:25:26

0

使用DATE()函數,你應該能夠建立一個值進行比較:

DATE(2010-08-26 12:13:24) 

將只返回你的日期部分ie。 2010-08-26。

2

我建議[...] WHERE DATEDIFF(CURDATE(),date_field) = 0 [...]

+0

感謝您提供此信息。我一直在尋找這個功能(雖然不是完全相同的問題),你的回答對我很有幫助:) – Ankur 2013-02-28 10:42:59

1

未來的只是一個建議:存儲日期varchar列是幾乎總是一個非常糟糕的主意。