在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个值看起来一样,所以我很惊讶收到错误消息。关于如何修改查询的想法?
答案 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)
只需删除''引号
即可