Sql 将字符串附加到日期计算

Sql 将字符串附加到日期计算,sql,sql-server,date,ssms,Sql,Sql Server,Date,Ssms,我正在尝试在日期计算的末尾附加一个“*” 出生日期和激活日期具有相同的日期格式YYYY-MM-DD ISNULL([date_of_birth],(DATEADD(YEAR,-[age],[date_of_activation]))) [DOB] 此代码的输出将为[出生日期],或根据个人年龄和产品激活情况计算出生日期 如何附加“*”以显示何时计算出生日期 这是我的一次尝试 ISNULL([date_of_birth],CONCAT(DATEADD(YEAR,-[age],[date_of_ac

我正在尝试在日期计算的末尾附加一个“*”

出生日期和激活日期具有相同的日期格式YYYY-MM-DD

ISNULL([date_of_birth],(DATEADD(YEAR,-[age],[date_of_activation]))) [DOB]
此代码的输出将为[出生日期],或根据个人年龄和产品激活情况计算出生日期

如何附加“*”以显示何时计算出生日期

这是我的一次尝试

ISNULL([date_of_birth],CONCAT(DATEADD(YEAR,-[age],[date_of_activation]),'*','')) [DOB]
错误

味精241,第16级,状态1,第7行
从字符串转换日期和/或时间时,转换失败

我浏览了其他一些帖子,但我找不到一个例子,在计算日期后,他们会附加字符串

理想情况下,输出看起来像;出生日期为空时的YYYY-MM-DD*

有什么建议吗?

您可以将
ISNULL()
内置
CONCAT()
与大小写表达式一起使用:

SELECT CONCAT(ISNULL([date_of_birth], (DATEADD(YEAR,-[age],[date_of_activation]))),
              CASE WHEN [date_of_birth] IS NULL THEN '*' END
             ) AS [DOB]

这里的错误告诉您问题所在
ISNULL
返回第一个参数的数据类型
[出生日期]
显然是一种日期和时间数据类型,但是,
CONCAT(DATEADD(YEAR,-[age],[date\u of\u activation]),“*”,“
永远不会返回日期,因此出现错误。