我有一个包含“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 .
**
答案 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
在此查询中,我计算出的结果来自当天的当前日期。