我正在尝试将nvarchar(5)
出生年份(例如1972年)转换为SQL Server表格中的datetime
(例如1972-06-01)。
类似的东西:
UPDATE TableName
SET DateOfBirth = CONVERT(datetime, YearOfBirth + '/01/01', 103)
这会抛出错误
从字符串
转换日期和/或时间时转换失败
我该如何解决这个问题?
答案 0 :(得分:4)
您正在做的事情需要两个步骤:将列中的值存储为日期,然后更改类型。
在您的情况下,需要第三步,因此该列足以存储日期值的值字符串表示形式。我认为这将在SQL Server中起作用:
ALTER TABLE TableName ALTER COLUMN DateOfBirth NVARCHAR(32);
UPDATE TableName
SET DateOfBirth = YearOfBirth + '-01-01';
ALTER TABLE TableName ALTER COLUMN DateOfBirth Date;
第一个ALTER TABLE
会将列更改为足够宽的新月和日。然后日期以标准格式构建(好吧,省略连字符将更加标准)。然后该列将转换为日期。
如果你只想要一个看起来像日期的东西 - 并且对Stack Overflow有很多批评;) - 你可以消除第三步。
答案 1 :(得分:0)
这就是你所需要的一切
UPDATE TableName
SET DateOfBirth = YearOfBirth + '-06-01'
Where YearOfBirth = '1972'