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

Sql 将日期格式dd/mm/yyyy更改为yyyy-mm-dd,sql,tsql,sql-server-2008,Sql,Tsql,Sql Server 2008,我在SQLServer2008中工作,合并时遇到如下错误 从字符串转换日期时间时转换失败 选择* 从表\u名称 where cast(f_datetime as date)我无法与f_datetime上的cast()通话。但对于其余部分,您可以: where cast(f_datetime as date) <= convert(date, convert(varchar(250), @year * 10000 + @month * 100 + 1)) where cast(f_date

我在SQLServer2008中工作,合并时遇到如下错误

从字符串转换日期时间时转换失败

选择*
从表\u名称

where cast(f_datetime as date)我无法与
f_datetime
上的
cast()通话。但对于其余部分,您可以:

where cast(f_datetime as date) <= convert(date, convert(varchar(250), @year * 10000 + @month * 100 + 1))

where cast(f_datetime as date)我假设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)
选择*
从表\u名称

WHERE CONVERT(DATE,f_datetime,103)你想在这里做什么?为什么
f_datetime
未存储为日期?请提供
f_datetime
的示例值。删除破折号并使用类似20181231的格式。2018-02-01可以解释为1月2日或2月1日,具体取决于当前的区域设置和设置,而如果没有破折号,则始终为YYYYMMDD。而且这个演员阵容也很糟糕。我甚至不知道你到底想达到什么目的。
f_datetime
@Year
@Month
的数据类型是什么?
SELECT *
FROM table_name
WHERE CONVERT(DATE,f_datetime,103)<= CAST(CONVERT(VARCHAR, @year) + '-' + CONVERT(VARCHAR, @month) + '-' + '01' AS DATE)