Sql 从字符串大小写转换日期和/或时间时转换失败+;铸造

Sql 从字符串大小写转换日期和/或时间时转换失败+;铸造,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我是一名编程初学者,我对演员阵容有这个问题 我的问题是: DECLARE @adtdays INT SELECT @adtdays = CASE WHEN DATEPART(MONTH, GETDATE()) > DATEPART(MONTH, CONVERT(DATETIME, Day1)) THEN DATEPART(DAY, (DATEADD(DAY, -1, CAST(CAST(DATEP

我是一名编程初学者,我对
演员阵容有这个问题

我的问题是:

DECLARE @adtdays INT

SELECT 
    @adtdays = CASE 
                  WHEN DATEPART(MONTH, GETDATE()) > DATEPART(MONTH, CONVERT(DATETIME, Day1)) 
                     THEN DATEPART(DAY, (DATEADD(DAY, -1, CAST(CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR) + '/1/' + CAST(DATEPART(year, Day1) AS VARCHAR) AS DATE)))) 
                     ELSE 0 
               END 
FROM 
    ProgProdAlpidi 
WHERE 
    ProductCode  = 'PRODUCT CODE' 
我得到以下错误

从字符串转换日期和/或时间时,转换失败

谁能帮帮我吗

好的,对不起,我是新的,,,期望的结果应该是:

如果当前月份大于“Day1字段”的月份,则 删除当前月份的一天,1,当前年份。 这将带给我上个月的最后一天

这将类似于“2017年4月30日”

第一行是columnHeader第二行是我表格的第一行

ProductCode     MY  Vehicle Project Dest    Line   Day1     Day2    Day3
PRODUCT CODE    MY  VEHICLE PROJECT DEST.   LIN    42826    42827   42828

但是我试图进行的转换似乎是错误的…

数据库表中的
Day1
列的数据类型是什么?如果是
INT
,您的查询应该可以工作。但是,如果是类似于
NVARCHAR
VARCHAR
的错误,那么您将得到上面报告的错误。

您想做什么?提供示例数据和所需结果。我相信导致错误的代码部分是
DATEPART(MONTH,CONVERT(DATETIME,Day1))
。这行代码的目的是什么?我已经添加了所需的结果。我看得越多,我想知道
day1
字段中的某些值是否就是无效日期。好了。。希望这对我有帮助:(谢谢你打破了它的浮动,我做了一个选择,检查它是否工作,它工作得很好…所以我认为它是其他的东西。。。