【发布时间】:2013-07-30 12:14:47
【问题描述】:
我在 sql server 2008 中有下表(称为“act_events”):
您注意到一些日期时间的格式是:“yyyy-mm-dd”和一些:“yyyy-dd-mm”,出于某种奇怪的原因,我还没有想到..
我有一个查询如下:
SELECT * from act_events
WHERE '2013-07-30'>=(CAST(e_start as DATE)) AND
'2013-07-30'<=(CAST(e_end as DATE))
我只想选择今天日期的事件。
但我想不出一种方法来选择这两种格式..
我尝试这个查询:
SELECT * from act_events
WHERE( @date1>=(CAST(e_start as DATE)) AND
@date2<=(CAST(e_end as DATE)) ) OR
( @date3>=(CAST(e_start as DATE)) AND
@date4<=(CAST(e_end as DATE)) )
但它只适用于某些日期..
非常感谢您的回答。
另外,如果有一个声明会将所有日期时间更改为正确的格式,我很乐意听到。
【问题讨论】:
-
对我来说,最有可能是 SQL 服务器,所有日期似乎都格式化为 yyyy-mm-dd?
-
@Recipe 我是这么想的,但是你在 2013-07-16 之后有 2013-01-08。我认为 OP 在区分英国和美国日期格式时存在问题。
-
是的,从样本来看,似乎没有任何理由相信格式是混合的。但如果他们是我建议进行数据清理练习,而不是做你所说的。只是一个建议。
-
@Recipe 默认情况下。不过你可以改变它。
-
@Dvirski 那么系统中有错误的日期。 SQL 不会以某种格式存储日期 - 它只是存储表示该日期的数据。上面查询结果中的 2013-03-08 是 3 月 8 日,而不是 8 月 3 日。我怀疑添加这些日期的任何内容都是将其格式化为字符串而不是日期时间。
标签: sql sql-server sql-server-2008 select