我正在执行以下查询
SELECT
IIF( (itemType = 1 OR itemType = 2), 'NA', CONVERT (DATE, createdAt)) AS 'date',
itemType AS 'type',
bar AS 'anything'
FROM table1
我希望得到类似的东西
+------------+---------+-----------+
| date | type | anything |
+------------+---------+-----------+
| 2019-01-01 | 0 | blah |
| NA | 1 | blah |
| 2019-02-15 | 0 | blah |
| 2018-08-10 | 0 | blah |
| NA | 2 | blah |
| | 0 | blah |
+------------+---------+-----------+
但出现以下错误
Error converting date and/or time from character string [SQL State=S0001, DB Errorcode=241]
如果我更改了'NA'
子句中的IIF
,那么我会在日期列中得到1900-01-01
的日期,该日期应该为空。
所以我看到选择的结果列是datetime
格式的列
是否可以放置'NA'
字符串而不是日期?
PD:我需要执行CONVERT (DATE, createdAt)
,以便从网页下载时以预期的格式导出日期。
PD2:有些项目没有日期,所以我需要在没有日期时显示Null,在itemType为1或2时显示“ NA”
答案 0 :(得分:1)
您不能同时拥有字符串'NA'
和DATE日期类型
我的建议使用很大的日期或使用NULL
而不是NA
SELECT
IIF( (itemType = 1 OR itemType = 2), CONVERT (DATE, '9999-1-1')), CONVERT (DATE, createdAt)) AS 'date',
OR
SELECT
IIF( (itemType = 1 OR itemType = 2), 'NA', CONVERT(VARCHAR, CAST(createdAt AS DATE), 105)) AS 'date',
答案 1 :(得分:0)
您可以在下面尝试-
SELECT
case when itemType in(1,2) then 'NA' else cast(createdAt as date) end AS 'date',
foo AS 'something',
bar AS 'anything'
FROM table1
答案 2 :(得分:0)
我建议使用NULL
代替“ NA”
SELECT
IIF( (itemType = 1 OR itemType = 2), NULL, CONVERT (DATE, createdAt)) AS 'date',
itemType AS 'type',
bar AS 'anything'
FROM table1