簡體   English   中英

SQL SELECT 語句錯誤與日期時間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM