[英]SQL SELECT statement error with datetime
帶有日期時間字段的語句有問題:
數據庫:
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')
我什么都得不到
為什么?
您將字段名稱“datetime”放入引號中,MySQL 將其視為字符串,而不是列。
SELECT * FROM myTable WHERE datetime > '2011-04-28 21:00:00';
您正在進行字符串比較,即將字符串“datetime”與某個日期進行比較。
將您的查詢更改為
...WHERE ([datetime] = '2011-04-28 21:27:04')
您實際上是否將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,您沒有指定您正在使用哪個數據庫,這些函數往往是特定於 db 的。
刪除列名周圍的引號:
SELECT * FROM myTable WHERE (datetime > '2011-04-28 21:00:00')
在您的查詢中,您將string
"datetime" 與另一個由數字組成的string
進行比較。
在字母數字上,數字在字母之前,因此“日期時間”字符串大於您要比較的數字日期字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.