2016-07-11 5 views
-1

Я хотел заменить нулевое значение на колонке даты с «0» .Я использовал эту строку кода, чтобы сделать это:Как заменить нулевое значение в столбец даты с «0»

case when ast.AL_OpenDateShort is null then 0 else ast.AL_OpenDateShort end as AL_OpenDateShort 

Я получил сообщение об ошибке:

"Operand type clash: int is incompatible with date"

Как я могу заменить нулевое значение в столбец даты с "0"

+0

'0' не является« датой ». Почему вы хотите хранить '0' в столбце' Date' –

+0

try .. ''0000-00-00'' –

+0

@ J.Zend 0000-00-00 недействительная дата ... –

ответ

1
declare @dt datetime = '2016-07-11' 
declare @dt2 datetime = null 

select case when @dt is null then '0' else cast(@dt as varchar(11)) end dt, 
     case when @dt2 is null then '0' else cast(@dt2 as varchar(11)) end dt2 

возвращает

dt   dt2 
Jul 11 2016 0 
+0

Спасибо, очень бабушка @ P.Salmon – mql4beginner

+1

Это не дата, это строка ...: P –

0

Попробуйте это:

SELECT ISNULL(myColumn, 0) FROM myTable 
+0

Спасибо, но это недействительный ответ на мой вопрос. – mql4beginner

+2

@ mql4beginner - Даже ваш вопрос не слишком важен. Почему вы хотите хранить '0' в столбце' DATE' –

+0

@Prdp, мне нужен статистический пакет, который не принимает значения null. – mql4beginner

1

Вы не можете иметь 0 как DATE, 0 является INT. Вы могли видеть, что 0 используется как DATE (как в DATEDIFF(...)), но это на самом деле дата 19000101.

В любом случае, я понятия не имею, что вы на самом деле после этого, но это дает вам дату в формате ISO 8601 INT, или 0, если значение null.

Возможно, вы захотите изменить тип INT на VARCHAR и в нужном формате. Но тогда у вас не будет даты, у вас будет строка.

COALESCE(CONVERT(INT, CONVERT(VARCHAR(8),MyDate, 112)),0) 
Смежные вопросы