如何选择两个日期之间的所有行,其中dateformat为DD.MM.YYYY
?
例如15.12.2013
和25.12.2013
答案 0 :(得分:3)
正如戈登和马的评论,你应该认真考虑将日期存储为日期类型而不是文本。话虽这么说,您可以使用SQL Server的datetime
函数将日期列转换为CONVERT()
,然后将其与日期范围进行比较。
SELECT *
FROM yourTable
WHERE CONVERT(datetime, date_col, 104) BETWEEN '2013-12-15' AND '2013-12-25'
答案 1 :(得分:2)
使用datetime
并使用between
,而不是转换为YYYY-MM-DD
;
我建议您使用date
和>= and <=
转换为YYYYMMDD
:
select *
from t
where convert(date, date_col, 104) >= '20131215'
and convert(date, date_col, 104) <= '20131225'
例如,即使您尝试使用看似明确的YYYY-MM-DD,在某些情况下也会出现这种情况 - 例如当用户的语言设置设置为法语时: