我無法想在我的SQL查詢來比較日期:比較日期在SQL
SELECT restrictions, restrictions_adddate FROM restrictions WHERE id = '555555'
AND restrictions_adddate BETWEEN ? and ?;
無論在格式「MM-DD-YYYY」的參數系統打印的。我收到了錯誤的日期格式錯誤,但嘗試了多種方式。任何幫助表示讚賞,如果需要更多信息,請讓我知道。謝謝。
我無法想在我的SQL查詢來比較日期:比較日期在SQL
SELECT restrictions, restrictions_adddate FROM restrictions WHERE id = '555555'
AND restrictions_adddate BETWEEN ? and ?;
無論在格式「MM-DD-YYYY」的參數系統打印的。我收到了錯誤的日期格式錯誤,但嘗試了多種方式。任何幫助表示讚賞,如果需要更多信息,請讓我知道。謝謝。
這應該在任何符合標準的DBMS的工作:
SELECT restrictions, restrictions_adddate
FROM restrictions
WHERE id = '555555'
AND restrictions_adddate BETWEEN DATE '2011-01-01' and DATE '2011-12-31';
@Dems:那是不正確的。格式'DATE'2011-01-01'由ANSI標準定義,以便文字必須採用ISO格式(yyyy-mm-dd)。如果你忽略關鍵字'DATE',那麼你是絕對正確的。 – 2011-05-26 14:31:00
@a_horse_with_no_name:其實*它是* true。在英式英語模式下,SQL Server會將此格式解釋爲'yyyy-dd-mm',除非您添加時間部分,例如「2012-07-13T00:00:00」 – 2012-07-24 01:52:57
@Trekstuff:那麼SQL Server嚴重違反了標準。 – 2012-07-24 06:27:27
嘗試檢出BOL中的CONVERT
函數T-SQL參考。你應該能夠使用這個指定日期的格式。
這是我的偏好:
AND restrictions_adddate BETWEEN
CONVERT(datetime, FLOOR(CONVERT(float, CAST('01-01-1900' AS DATETIME))))
AND CONVERT(datetime, FLOOR(CONVERT(float, Getdate())));
這可以讓你比較日期(減去時間戳)。
哪些DBMS您使用的? – 2011-05-26 14:18:54
@a_horse_with_no_name,Oracle11g – Dan 2011-05-26 14:22:23
您是否也嘗試格式「yyyy-mm-dd」? – 2011-05-26 14:05:13