如何选择两个日期之间的所有行,其中日期格式为
DD.MM.YYYY
?
例如在
15.12.2013
和 25.12.2013
之间
正如戈登和马所评论的那样,您应该认真考虑将日期存储为日期类型而不是文本。话虽这么说,您可以使用 SQL Server 的
datetime
函数将日期列转换为 CONVERT()
,然后将其与日期范围进行比较。
SELECT *
FROM yourTable
WHERE CONVERT(datetime, date_col, 104) BETWEEN '2013-12-15' AND '2013-12-25'
不要转换为
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,这在某些情况下也可能会中断 - 例如当用户的语言设置设置为法语时:
我也有同样的问题。日期以东欧区域格式“dd.mm.yyyy”存储。尝试通过 vba 与此类日期交互是没有用的。相反,当切换到 yyyy/mm/dd 或 mm/dd/yyyy 区域格式时,一切正常。 如果有人设法解决这个问题,该解决方案将受到欢迎。