Подтвердить что ты не робот

Измените значения NULL в формате Datetime на пустую строку

У меня есть таблица, которая содержит значения "NULL", которые имеют тип "Datetime". Теперь мне нужно преобразовать их в пустую строку, но когда я использую функцию преобразования

ISNULL( [Accrued Out of Default] ,'' )

здесь начисляется значение по умолчанию типа datetime, что он изменяет значение null на '1900-01-01 00: 00: 00.000' вместо пустого

Затем я пытаюсь преобразовать их в varchar и применить те же

ISNULL(CONVERT(varchar(50),  [Amort Into Default] ),'')

Теперь я могу преобразовать в пустую строку, но теперь эти datetime преобразуются в строку, которая мне нужна в datetime Поэтому я стараюсь CAST, CONVERT, но не работает.

CONVERT(Datetime,'ISNULL(CONVERT(varchar(50),  [Amort Into Default] ),'')',120)

Это дает ошибку.

Есть ли какое-либо возможное решение.

> **Solution Hi someone answered this to do as.
>      ISNULL(CONVERT(varchar(50),  [Amort Into Default] ,120),'') and it works  I dont know why .

**

4b9b3361

Ответ 1

CASE и CAST должны работать:

CASE WHEN mycol IS NULL THEN '' ELSE CONVERT(varchar(50), mycol, 121) END

Ответ 2

используя ISNULL, это лучший способ найти нулевое число:

ISNULL(CASE WHEN CONVERT(DATE, YOURDate) = '1900-01-01' THEN '' ELSE CONVERT(CHAR(10), YOURDate, 103) END, '') AS [YOUR Date]

Ответ 3

declare @date datetime; set @date = null
--declare @date datetime; set @date = '2015-01-01'

select coalesce( convert( varchar(10), @date, 103 ), '')

Ответ 4

Это также работает:

REPLACE(ISNULL(CONVERT(DATE, @date), ''), '1900-01-01', '') AS 'Your Date Field'

Ответ 5

У меня было что-то подобное, и здесь (отредактированная) версия того, что я закончил, успешно использовал:

ISNULL(CONVERT(VARCHAR(50),[column name goes here],[date style goes here] ),'')

Вот почему это работает: если вы выберете дату NULL, она отобразит возврат NULL, хотя он действительно сохранен как 01/01/1900. Вот почему ISNULL в поле даты, когда вы работаете с любым типом данных даты, не будет рассматривать это как NULL, поскольку он технически не хранится как NULL.

Однако, как только вы преобразуете его в новый тип данных, он преобразует его как NULL, и в этот момент вы ISNULL будут работать так, как вы ожидаете, что он будет работать.

Я надеюсь, что это сработает и для вас!

~ Eli

Обновление почти через год:

У меня была аналогичная ситуация, когда мне нужен был вывод данных типа даты, и мое вышеупомянутое решение не сработало (оно работает только в том случае, если вам нужно, чтобы оно отображалось как дата, а не дата данных типа.

Если вам нужно, чтобы это был тип данных даты, есть способ обойти его, и это для того, чтобы вложить REPLACE в ISNULL, для меня работало следующее:

Select 
    ISNULL(
        REPLACE(
            [DATE COLUMN NAME],
            '1900-01-01',
            ''
        ),
    '') AS [MeaningfulAlias]

Ответ 6

Select isnull(date_column_name,cast('1900-01-01' as DATE)) from table name

Ответ 7

Вы можете попробовать следующее

выберите случай, когда mydatetime IS NULL THEN '' else convert (varchar (20), @mydatetime, 120) end как convert_date от sometable

-- Testing it out could do --

declare @mydatetime datetime
set @mydatetime = GETDATE() -- comment out for null value
--set @mydatetime = GETDATE()

select 
case when @mydatetime IS NULL THEN ''
else convert(varchar(20),@mydatetime,120)
end as converted_date

Надеюсь, это поможет!

Ответ 8

select case when IsNull(CONVERT(DATE, StartDate),'')='' then 'NA' else Convert(varchar(10),StartDate,121) end from table1

Ответ 9

Попробуйте использовать функцию DECODE

Пример: декодирование (MYDATE, NULL, '', MYDATE)

Если дата равна NULL, тогда отображается '' (BLANK), иначе отображается дата.

Ответ 10

declare @mydatetime datetime
set @mydatetime = GETDATE() -- comment out for null value
--set @mydatetime = GETDATE()

select 
case when @mydatetime IS NULL THEN ''
else convert(varchar(20),@mydatetime,120)
end as converted_date

В этом запросе я определил результат, полученный с текущей даты дня.