首页 > 解决方案 > 用日期值替换字符串

问题描述

目前,我的包中有一个派生列转换,它将查找一个NULL值,如果是NULL,它将给它一个带有正斜杠的默认日期,如下所示

REPLACENULL([date],"2/2/1999")

但是,如果该字段不是NULL,它将有一个字符串日期,看起来像20200202。我想将当前表达式添加到 where 如果该字段不为 null 则替换202002022020-02-02. 我将不胜感激,并会给予高度评价!

标签: sqlsql-serverssisetlderived-column

解决方案


下面是我在 SQL Server 中的做法。

注意FORMAT需要 SQL Server 2012+

DECLARE @StringDate varchar(20);

    -- NON-NULL date.
    SET @StringDate = '20200202'
    SELECT
        ISNULL ( FORMAT( CAST ( @StringDate AS date ), 'yyyy-MM-dd' ), '2/2/1999' ) AS NonNullStringDate;

    -- NULL date.
    SET @StringDate = NULL;
    SELECT
        ISNULL ( FORMAT( CAST ( @StringDate AS date ), 'yyyy-MM-dd' ), '2/2/1999' ) AS NullStringDate;

退货(分别)

+-------------------+
| NonNullStringDate |
+-------------------+
| 2020-02-02        |
+-------------------+

+----------------+
| NullStringDate |
+----------------+
| 2/2/1999       |
+----------------+

为了日期格式的一致性,您可能需要考虑更改2/2/19991999-2-2.


推荐阅读