Вот часть моего запроса:SQL, если дата имеет нулевое значение, есть пустое VARCHAR, если не нулевая дата новообращенного
CASE
WHEN COALESCE(V_CONSTAT_ACTUAL_DATES.ID187, '') = ''
THEN ' '
ELSE CONVERT(date, V_CONSTAT_ACTUAL_DATES.ID187)
END AS 'actualFinish'
То, что я пытаюсь сделать здесь говорить, если эта дата является нулевой или пустой, то have '' еще преобразовать его в дату, но когда у меня есть нулевое значение, он возвращает 1900-01-01
, как получилось?
Я даже пытался использовать CONVERT (varchar, ''), и это ничего не делало?
*** Столбец в результирующем наборе не может быть двух типов данных. *** У вас либо есть тип данных даты, который «не является допустимым значением, либо у вас есть тип данных varchar, t дата. Я не вижу в вашем примере, где вы просто пытаетесь установить дату в NULL, а не в пустой набор. – xQbert
Пустая строка преобразует в 0 при преобразовании в int и 0 отличает к базовой дате 1900-01-01, поэтому я предполагаю, что в этом случае неявное поведение приведения является транзитивным, а пустая строка, переданная в datetime, тоже переходит к этому. –
Какой тип данных вы ожидаете от вывода? Дата или варчар? – xQbert