在SQL Server 2008中工作,在合并时出现类似
的错误从字符串转换日期时间时转换失败
select *
from table_name
where cast(f_datetime as date) <=
cast(cast(datepart(year,cast(convert(varchar(250),@Year,103) as date) )as varchar(250))+ '-'+ cast(datepart(MM,cast(convert(varchar(10),@month,103) as varchar(50))+'-01' as date)
答案 0 :(得分:1)
我无法与cast()
上的f_datetime
讲话。但对于其余部分,您可以执行以下操作:
where cast(f_datetime as date) <= convert(date, convert(varchar(250), @year * 10000 + @month * 100 + 1))
这简化了计算,并防止由于@year
函数而将诸如date
之类的内容视为convert()
。
答案 1 :(得分:0)
我假设您的f_datetime字段格式为“ dd / mm / yyyy”。如果是,您可以轻松地转换此字段,而不必尝试合并和转换@year和@month字段。检查此查询:
SELECT *
FROM table_name
WHERE CONVERT(DATE,f_datetime,103)<= CAST(CONVERT(VARCHAR, @year) + '-' + CONVERT(VARCHAR, @month) + '-' + '01' AS DATE)