【问题标题】:CASTing a datetime to string if null value - keeping original datetime formatting如果为空值,则将日期时间转换为字符串 - 保持原始日期时间格式
【发布时间】:2013-08-22 17:58:11
【问题描述】:

我的查询有以下部分:

ISNULL(cast(fd.decision_date as varchar(20)), 'PENDING') as facility,
ISNULL(cast(cd.decision_date as varchar(20)), 'PENDING') as corporate,
ISNULL(cast(cb.creation_date as varchar(20)), 'PENDING') as billing

我的值最初是 datetime 数据类型,但如果值为 NULL,我想做的是返回单词“PENDING”。

使用上面的代码,我的结果是 casted 到 varchar,因此返回如下内容:

Aug 20 2013 9:35AM 

而不是2013-08-20 09:35:54

我们将不胜感激。

【问题讨论】:

    标签: sql sql-server datetime isnull


    【解决方案1】:

    cast 替换为convert 和适当的样式Convert syntax & styles,例如:

    ISNULL(convert(varchar(20), fd.decision_date, 120), 'PENDING') as facility,
    

    【讨论】:

      【解决方案2】:

      不要使用cast(... as varchar(20)),而是使用带有样式编号的convert,这正是它的用途。

      SELECT CONVERT(CHAR(19), GETDATE(), 120);
      

      所以你的查询变成:

      COALESCE(CONVERT(CHAR(19), fd.decision_date, 120), 'PENDING') as facility,
      COALESCE(CONVERT(CHAR(19), cd.decision_date, 120), 'PENDING') as corporate,
      COALESCE(CONVERT(CHAR(19), cb.creation_date, 120), 'PENDING') as billing
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多