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

Attaching string characters to date calculations

我正在尝试将“*”附加到日期计算的末尾。

Date_of_birth 和 Date_of_Activatiion 具有相同的日期格式 YYYY-MM-DD

ISNULL([date_of_birth],(DATEADD(YEAR,-[age],[date_of_activation]))) [DOB]

此代码的输出将是 [date_of_birth] 或根据人的年龄和产品激活计算出生日期。

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

这是我的尝试;

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

错误;

Msg 241, Level 16, State 1, Line 7
Conversion failed when converting date and/or time from character string.

我浏览了一些其他帖子,但我找不到他们在计算日期后附加字符串的情况。

理想情况下,输出应该是这样的; YYYY-MM-DD* 当出生日期为空时。

有什么建议吗?

您可以在 CONCAT() 中使用 ISNULL()case 表达式 :

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