2

我正在使用 SQL Server 2005。

我的Trade_Date专栏是 datatype datetime

它的值如下:2/12/2013 11:59:00 PM , 2/13/2013 11:59:00 PM

即不同的日期与时间。

我想比较 where 子句中的日期 [仅日期]。

我正在尝试以下查询:

select * 
from foclosing 
where CONVERT(varchar(11), Trade_Date) like '2/12/2013 %'

或者

select * 
from foclosing 
where Trade_Date = CONVERT(datetime, '2/12/2013')

但是这两个查询都不起作用。

可能是什么问题?

4

1 回答 1

7
select * from foclosing
where Trade_Date >= '20130212' AND Trade_Date < '20130213'
  1. 使用对 SQL Server 安全的 yyyymmdd
  2. 不要将函数应用于列,然后比较(您的第一个查询)
    在此处查看错误 2:https ://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
  3. 不要将基于语言环境的日期与 varchar 进行比较(您的第一个查询)
  4. Trade_Date 有一个时间元素,这就是您的第二次查询失败的原因

总之,日期转换不应该用于这样的示例: datetime is a range

于 2013-04-04T12:28:29.147 回答