2014-12-04 53 views
1

我有一個稱爲數據的表,其中有一個名爲'datetime'的字段。該字段被設置爲varchar。該字段的值如下所示:如何在DATETIME字段中使用BETWEEN或<,>運算符

2014-12-04.2300, 
2014-12-04.2200, 
2014-12-04.1600 

這是(date.24hr time)格式。如何選擇兩個日期之間的所有記錄,如2014-12-02 and 2014-12-05?

我曾嘗試以下:

SELECT * FROM `data` WHERE `datetime` BETWEEN 2014-12-02.0000 AND 2014-12-05.2300 

但它不工作,返回空。任何想法如何?

謝謝。

+0

你試過引用的價值觀和移除'.0000',即''2014-12-02'' – 2014-12-04 14:05:22

+0

是否有可能對那些列轉換爲本地'datetime'類型?這樣做可以爲您節省未來的麻煩。 – Sonny 2014-12-04 14:10:59

+0

我已經嘗試刪除0000s。我無法將其轉換爲通常的日期時間類型。我知道這很頭疼:( – Zendie 2014-12-04 14:13:50

回答

3

報價的值。現在他們是算術表達式。 MySQL將2014-12-02.0000解釋爲2014 minus 12 minus 2.0000,它根本沒有錯。

SELECT * FROM `data` WHERE `datetime` BETWEEN '2014-12-02.0000' AND '2014-12-05.2300' 
1

,如果你要選擇2個日期之間的記錄則嘗試此查詢

SELECT * FROM `data` WHERE `datetime` BETWEEN date('2014-12-02') AND date('2014-12-05') 

在VARCHAR現場使用的情況下,下面的查詢

SELECT * FROM `data` WHERE date(left(`datetime`, 10)) BETWEEN date('2014-12-02') AND date('2014-12-05') 
+1

我也會把'datetime'換成日期,我認爲它也應該這樣做。也許'date(left('datetime',10))' – CodeBird 2014-12-04 14:08:26

+1

它是一個varchar字段,所以我認爲他有義務這麼做 – CodeBird 2014-12-04 14:10:31

+0

這個回答是完全錯誤的...... – 2014-12-04 14:18:39