SQL Server查询日期转换问题

时间:2014-04-01 22:33:13

标签: sql sql-server sql-server-2008-r2

我想在我的查询中添加条件,例如2012-10-05 00:29:06.338< =今天的日期,但是我遇到了问题。

请帮我解决这个问题。

我的查询如下:

Select * from table1
where 
CONVERT(varchar(12),'2012-10-05 00:29:06.338', 106) + ' ' + CONVERT(varchar(12),'2012-10-05 00:29:06.338', 108) <= CONVERT(varchar(12), GETDATE(),106) + ' 23:59:00.000'

2 个答案:

答案 0 :(得分:0)

您正在尝试将字符串评估为日期:

Select '8'
where 
CONVERT(DATETIME,CONVERT(varchar,Col1, 101)) 
+ ' ' + CONVERT(DATETIME,CONVERT(varchar,Col1,108)) 
<= CONVERT(DATETIME,CONVERT(varchar, GETDATE(),101))+' ' + CONVERT(DATETIME,CONVERT(varchar,'23:59:00.000', 108))

答案 1 :(得分:0)

您不能通过将两个值都转换为varchar来进行日期比较。您需要将值转换为datetime并进行比较。

如果数据库中名为col1的列是日期时间,则可以将其直接与GETDATE()进行比较。

例如: select * from table1 where col1 > GETDATE()

如果您确实需要将日期与字符串进行比较,则可以明确转换为datetime:

Select * 
from table1
where CONVERT(DATETIME,'2012-10-05 00:29:06.338') <= GETDATE()

或者您可以让SQL Server隐式为您进行转换:

Select * 
from table1
where '2012-10-05 00:29:06.338' <= GETDATE()