【发布时间】:2013-03-20 12:55:22
【问题描述】:
当我尝试在 where 子句中使用 datepart 函数时出现错误。有人可以看看我下面的语法并提供一些建议吗?
DATEPART(DW,convert(date,convert(varchar(4),year)+'-'+convert(varchar(4),month)+'-
'+convert(varchar(4),day),120))
我正在尝试创建一个视图,并且选择查询在没有 where 子句的情况下可以正常工作,但是当我添加它时它返回以下错误:
Msg 241, Level 16, State 1, Line 1 转换时转换失败 字符串中的日期和/或时间。
【问题讨论】:
-
那不是语法错误,那是在执行转换时来自无效字符串的错误。
year、month和day字段是否包含可用于创建有效日期的值? -
是的,所有的年月日值都可以用来创建有效日期。
-
试着把convert(date,convert(varchar(4),year)+'-'+convert(varchar(4),month)+'-'+convert(varchar(4), day),120) 并打印它以查看它正在创建的日期,然后将该变量放入 datepart 函数中
-
我可以将其添加到字段列表中,并且添加时没有错误。它正确显示了我的天数。但是我不希望它出现在视图中,而是想根据条件进行过滤。
-
请向我们展示一个不起作用的示例 WHERE 子句。顺便说一句,您可以使用
DateAdd从没有字符串转换的部分创建日期以添加到 0 (1900-1-1) ... 24/3/2013 的示例:DATEPART(DW,DATEADD(day, 24-1,DATEADD(month, 3-1,DATEADD(year, 2013-1900, 0))))
标签: sql sql-server-2008 syntax-error datepart