Year(int) Month(int) ProductName Date(DateTime)
2013 11 ACB
2013 11 CDE
我正在尝试更新上表中的Date
值。
此查询不起作用。
我可以将int
转换为datetime
吗?
UPDATE t
SET t.[Date] = convert(date, convert(int,
t.[Year]) + '-' + convert(int, t.[Month]) + '-01')
FROM Table t
答案 0 :(得分:4)
您正在尝试添加整数和字符串。这不是Visual Basic 6.0;您需要更明确地使用数据类型转换,尤其是在尝试使用数字类型构建字符串时。
当然,有更容易和更有效的方法来做到这一点,而不是打扰任何笨重的字符串转换:
UPDATE dbo.Table
SET [Date] = DATEADD(MONTH, [Month]-1, DATEADD(YEAR, [Year]-1900, 0));
在SQL Server 2012中(不确定为什么要标记3个不同的版本):
UPDATE dbo.Table
SET [Date] = DATEFROMPARTS([Year],[Month],1);
在任何一种情况下都没有理由使用FROM
...