2011-04-28 125 views
0

東西SQL SELECT語句錯誤是錯誤的與時間字段聲明:與日期時間

MYDB:

id name datetime 
1 test1 2011-04-28 19:37:44 
2 test2 2011-04-28 21:27:04 

當我運行下面的語句

SELECT * 
FROM myTable 
WHERE ('datetime' > '2011-04-28 21:00:00') 

我得到的所有 - TEST1和test2

當我運行這個聲明

SELECT * 
FROM myTable 
WHERE ('datetime' = '2011-04-28 21:27:04') 

我什麼也沒得到

當我運行下面的語句

SELECT * 
FROM myTable 
WHERE ('datetime' > '2011-04-28 21:00:00') 
    AND ('datetime' < '2011-04-29 21:00:00') 

我什麼也沒得到

爲什麼?

+0

你確定你的日期時間字段是一個真正的日期時間字段,而不是varchar?你用什麼數據庫? – 2011-04-28 20:14:29

回答

1

您將字段名稱「datetime」放入引號中,MySQL將其視爲字符串而不是列。

SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00'; 
+0

+1實際上,每個DBMS都將''datetime''視爲字符串文字和'datetime'作爲列名稱。 – 2011-04-28 20:14:39

0

實際上是否將datetime列名稱放在單引號中?如果是的話,這意味着你將字符串'datetime'與字符串'2011-04-28 21:00:00'比較,這沒有多大意義。在SQL中,如果單引號中包含的內容通常是字符串文字。

你試過:

SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00' 

或者更可能的:

SELECT * 
FROM myTable 
WHERE datetime > to_date('2011-04-28 21:00:00','YYYY-MM-DD HH24:MI:SS'); 

注意:to_date功能和格式字符串是特定於Oracle,你沒有指定要使用哪個數據庫和這些函數往往是數據庫特定的。

1

您正在進行字符串比較,即將字符串「datetime」與某個日期進行比較。

查詢更改爲

...WHERE ([datetime] = '2011-04-28 21:27:04') 
0

繞柱名稱中刪除引號:

SELECT * FROM myTable WHERE (datetime > '2011-04-28 21:00:00') 

在查詢中,你比較string「日期時間」對另一string,由數字構成。

字母數字前面有數字,所以「datetime」字符串大於您要比較的數字日期字符串。

相關問題