如果SQL SERVER中的日期为null,则为替换值问题

时间:2018-03-20 15:11:39

标签: sql sql-server

嗨,我有一个日期字段,很少有记录为空。

我的日期字段名为LSF.EarliestFrom

当我使用此代码时

isnull(LSF.EarliestFrom,'') as LSFDateAppliesFrom

输出为1900-01-01。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

正如评论中所述,date字段上的空字符串将显示默认日期1900-01-01

如果您确实需要空白,则必须将列转换或转换为字符串:

ISNULL(CONVERT(varchar(10),LSF.EarliestFrom),'') as LSFDateAppliesFrom

我不推荐这个,除非它纯粹用于显示目的。使用存储为字符串的日期是一件好事。

答案 1 :(得分:0)

转换是这里的事情,你试图在同一列中显示 DateTime Varchar

在这种情况下,如果要显示日期和空白(非空),则必须仅显示Varchar

您可以使用此CONCAT函数将 Date 或任何其他数据类型解析为 Varchar

DECLARE @date DATE
SELECT CONCAT(@date,'')

格式为

的CONCAT
SELECT CONCAT(FORMAT(@date,'MM/dd/yyyy'),'')

答案 2 :(得分:0)

如果您想要黑色代替NULL

,这将有效
DECLARE @T TABLE (ID INT, Dates DATETIME)
    INSERT INTO @T VALUES
    (1,GETDATE()),
    (2,GETDATE()),
    (3,NULL),
    (4,GETDATE()),
    (5,GETDATE()),
    (6,NULL),
    (7,GETDATE());

    SELECT
    ID,
    Dates,
    ISNULL(CAST(CAST(Dates AS DATE) AS VARCHAR(10)),'')
    FROM @T