按日期替换数据类型SQL

时间:2018-07-18 20:08:08

标签: sql sql-server

我有一个日期数据类型,我只想将某些字符更改为1到9。例如,如果日期为1942-08-19 00:00:00.000,我希望将其更改为9942-08-99 00:00:00.000'。我已经尝试过了:

请帮助。

选择将起作用,但其更新不起作用并给出错误:

更新表   set [Birthdate] = Replace(Birthdate,'2','8')

错误:“将varchar数据类型转换为日期时间数据类型导致值超出范围”

2 个答案:

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

您不能将其转换为日期,因为该日期(例如您的示例)可能无效。

说实话,我真的没有想到这样做的充分理由。如果您想混淆生日,可以选择生日的一个随机日期。如果您希望将它们随机化,则可以在日期中添加一个随机的时间段。