我需要从MSSQL数据库中选择日期范围,但是s.ended字段尚未设置为日期时间字段。它已设置为varchar,存储日期的格式为d/m/Y
。
我已尝试过以下的条款,但我收到以下错误消息。有没有人知道如何在不改变数据库设计的情况下解决这个问题?
Where子句:
WHERE
(S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103))
AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
错误讯息:
将varchar数据类型转换为日期时间数据类型会导致超出范围值。
答案 0 :(得分:2)
试试这个:
WHERE
(CONVERT(DateTime, S.ended, 103) > CONVERT(DateTime, '28/07/2012 00:00:01', 103))
AND (CONVERT(DateTime, S.ended, 103) < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
答案 1 :(得分:1)
在与S.ended
值进行比较之前,Datetime
可能没有采用正确的格式。
首先将该值转换为Datetime然后进行比较。
答案 2 :(得分:-1)
WHERE (S.ended > CONVERT(DateTime, '28/07/2012 00:00:01', 103)) AND (S.ended < CONVERT(DateTime, '28/08/2012 00:00:01', 103))
可能会将日期更改为美国日期而不是 '28 / 07/2012 00:00:01'尝试 '07 / 28/2012 00:00:01'< /强>