在SQL查询中比较日期时出错

时间:2010-01-31 16:56:50

标签: sql sql-server tsql date casting

在ASP.NET / C#类中,我正在尝试运行查询,我在其中比较日期:

select * from table1 CreatedDate >='DATEADD(d,-500,GETDATE())';

基本上我正在尝试从过去500天中选择行。

问题是我收到以下错误: 从字符串转换datetime的语法错误。

数据库中CreatedDate字段的示例是2003-09-19 15:32:23.283。该字段设置为type = datetime,default = getdate()。

如果我运行查询SELECT DATEADD(d,-500,GETDATE());它返回2008-09-17 23:41:34.710

2个值看起来一样,所以我很惊讶收到错误消息。关于如何修改查询的想法?

4 个答案:

答案 0 :(得分:2)

select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE())

丢失DATEADD(d,-500,GETDATE())周围的引号。这些使表达式varchar

Datatype precedence表示您正在尝试将从DATEADD开始的字符串转换为datetime ...

答案 1 :(得分:0)

你试过没有单引号吗?

CreatedDate >=DATEADD(d,-500,GETDATE())

答案 2 :(得分:0)

你已经在dateadd表达式周围放置了撇号,所以它不是表达式,而是一个字符串。这是它无法转换为日期时间值的字符串。

select * from table1 CreatedDate >= DATEADD(d,-500,GETDATE());

答案 3 :(得分:0)

只需删除''引号

即可