2013-03-20 74 views
0

我在尝试在where子句中使用datepart函数时出现错误。有人可以看看我的语法,并提供一些建议吗?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 Conversion failed when converting date and/or time from character string.

+0

这不是语法错误,这是执行转换时来自无效字符串的错误。 'year','month'和'day'字段是否包含可用于创建有效日期的值? – Guffa 2013-03-20 13:01:55

+0

是,所有年份,月份和日期值均可用于创建有效日期。 – Flashgordan 2013-03-20 13:16:32

+0

尝试将convert(date,convert(varchar(4),year)+' - '+ convert(varchar(4),month)+' - '+ convert(varchar(4),day),120)in a变量并打印它以查看它创建的日期,然后将该变量放入datepart函数 – donstack 2013-03-20 13:32:00

回答

0

试试这个:

PRINT DATEPART(DW, 
    CONVERT(DATE, 
     CONVERT(VARCHAR(4),YEAR(getdate()) 
     + '-' + CONVERT(VARCHAR(4), MONTH(getdate())) 
     + '-' + CONVERT(VARCHAR(4), DAY(getdate())), 120)))