我有一些问题。我有一些像这样的查询CASE WHEN
,并得到一个错误:
操作数类型冲突:int与日期不兼容
代码:
CASE
WHEN [AVL] = 1 THEN 1
WHEN [DATE_1] IS NOT NULL THEN [DATE_1]
WHEN [DATE_2] IS NOT NULL THEN DATEADD(DD, +2, [DATE_2])
END AS [ETA]
列DATE_1
和DATE_2
的类型为date
,但当我运行此查询时,我会得到错误:
消息206,级别16,状态2,第8行
操作数类型冲突:int与日期不兼容
我希望输出列为date
,或者此列将日期转换为nvarchar
或字符串,就像我使用CONVERT(nvarchar, [DATE_1], 23]
一样,但我也有一些类似的错误。
将nvarchar值"2021-11-06"转换为数据类型int时转换失败。
非常感谢,如果我得到答案,谢谢。
我有我的答案
因为AVL是int,我们必须
CASE
WHEN [AVL] = 1 THEN '1' --datefromparts(1900, 1, 1)
WHEN [DATE_1] IS NOT NULL THEN convert(nvarchar(10),[DATE_1])
WHEN [DATE_2] IS NOT NULL THEN cast(DATEADD(DD,+2,[DATE]_2) as varchar)
因为我希望输出是字符串或nvarchar