将Datetime格式的NULL值更改为空字符串

时间:2013-11-12 13:33:46

标签: sql-server sql-server-2008 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中需要的字符串 所以我尝试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 .

**

10 个答案:

答案 0 :(得分:35)

CASE和CAST应该有效:

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

答案 1 :(得分:10)

使用ISNULL是我在日期中找到NULL的最佳方法:

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

答案 2 :(得分:3)

PackageManager

答案 3 :(得分:2)

这也有效:

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

答案 4 :(得分:2)

我有类似的东西,以及我最终成功使用的这里(编辑过的)版本:

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

这就是为什么这样做的原因:如果你选择一个NULL的日期,它将显示返回NULL,尽管它实际上存储为01/01/1900。这就是为什么日期字段上的ISNULL,当您使用任何日期数据类型时将其视为NULL,因为它在技术上不会存储为NULL。

但是,一旦将其转换为新的数据类型,它就会将其转换为NULL,此时,您的ISNULL将按预期的方式工作。

我希望这也适合你!

〜利

近一年后更新:

我有类似的情况,我需要输出为日期数据类型,而我前面提到的解决方案没有工作(只有当你需要它显示为日期时才有效,而不是日期数据类型。

如果您需要它是日期数据类型,那么 可以绕过它,这就是将REPLACE嵌套在一个ISNULL,以下内容对我有用:

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

答案 5 :(得分:0)

您可以尝试以下

选择 mydatetime为空时的情况那么'' 其他转换(varchar(20),@ mydatetime,120) 以convert_date结尾 来自某些表格

-- 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

希望这有帮助!

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

尝试使用解码功能

例如:解码(MYDATE,NULL,'',MYDATE)

如果日期为NULL,则显示''(空白),否则显示日期。

答案 9 :(得分:0)

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

在此查询中,我计算出的结果来自当天的当前日期。