我有一个日期数据类型,我只想将某些字符更改为1到9。例如,如果日期为1942-08-19 00:00:00.000,我希望将其更改为9942-08-99 00:00:00.000'。我已经尝试过了:
请帮助。
选择将起作用,但其更新不起作用并给出错误:
更新表 set [Birthdate] = Replace(Birthdate,'2','8')
错误:“将varchar数据类型转换为日期时间数据类型导致值超出范围”
答案 0 :(得分:1)
对于选择数据,您可以进行转换或转换:
SELECT REPLACE(CAST(Birthdate as varchar(50)),'1','9')
如果您实际上要存储该数据,则需要将列数据类型从datetime
更改为字符串类型(即varchar(50)
)
或在另一列中存储新字符串。
您不能在9942-08-99 00:00:00.000
列中存储类似datetime
的内容,因为那不是有效日期。
答案 1 :(得分:0)
一种方法是添加新列:
alter table t
add birthdate_obfuscated as ( Replace(Birthdate, '2', '8') );
您不能将其转换为日期,因为该日期(例如您的示例)可能无效。
说实话,我真的没有想到这样做的充分理由。如果您想混淆生日,可以选择生日的一个随机日期。如果您希望将它们随机化,则可以在日期中添加一个随机的时间段。