我无法想在我的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