将日期格式dd / mm / yyyy更改为yyyy-mm-dd

时间:2018-11-26 14:42:26

标签: sql tsql sql-server-2008

在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)

2 个答案:

答案 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)