在SQL查询中解析日期

Fre*_*cer 2 sql datetime sql-server-2005

我正在使用SQL Server 2005.

我的Trade_Date列是数据类型datetime.

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

即与时间不同的日期.

我想比较where子句中的日期[only date].

我正在尝试以下查询:

select * 
from foclosing 
where CONVERT(varchar(11), Trade_Date) like '2/12/2013 %'
Run Code Online (Sandbox Code Playgroud)

要么

select * 
from foclosing 
where Trade_Date = CONVERT(datetime, '2/12/2013')
Run Code Online (Sandbox Code Playgroud)

但这两个查询都不起作用.

可能是什么问题?

gbn*_*gbn 7

select * from foclosing
where Trade_Date >= '20130212' AND Trade_Date < '20130213'
Run Code Online (Sandbox Code Playgroud)
  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是一个范围

  • @Freelancer:根据我的第二个要点,这是一个非常糟糕的模式 (4认同)