SQL пытается использовать текст и дату в одном столбце результатов выбора - PullRequest
0 голосов
/ 12 июня 2019

Я делаю следующий запрос

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, когда нет даты, и 'NA', когда itemType равен 1 или 2

Ответы [ 3 ]

1 голос
/ 12 июня 2019

У вас не может быть строки 'NA' и типа даты DATE одновременно

мое предложение использовать очень большую дату или использовать NULL вместо NA

SELECT 
  IIF( (itemType = 1 OR itemType = 2), CONVERT (DATE, '9999-1-1')), CONVERT (DATE, createdAt)) AS 'date',

ИЛИ

SELECT 
  IIF( (itemType = 1 OR itemType = 2), 'NA', CONVERT(VARCHAR, CAST(createdAt AS DATE), 105)) AS 'date',
0 голосов
/ 12 июня 2019

Я рекомендую использовать NULL вместо 'NA'

SELECT 
  IIF( (itemType = 1 OR itemType = 2), NULL, CONVERT (DATE, createdAt)) AS 'date',
  itemType AS 'type',
  bar AS 'anything'
FROM table1
0 голосов
/ 12 июня 2019

Вы можете попробовать ниже -

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...