【问题标题】:SQL Server: How to concatenate string constant with date?SQL Server:如何将字符串常量与日期连接起来?
【发布时间】:2013-11-01 15:23:22
【问题描述】:
select packageid,status+' Date : '+UpdatedOn from [Shipment_Package] 

在sql server中执行上述代码时出现如下错误。 UpdatedOn 的类型是 DateTime,状态是 varchar。我们想连接状态、日期和更新日期。

错误:

从字符转换日期和/或时间时转换失败 字符串。

【问题讨论】:

  • 问题正文中是否至少有一个单词为空?

标签: sql sql-server sql-server-2008r2-express


【解决方案1】:

您需要将UpdatedOn 转换为varchar,如下所示:

select packageid, status + ' Date : ' + CAST(UpdatedOn AS VARCHAR(10))
from [Shipment_Package];

如果您想以特定格式格式化日期时间,您可能还需要使用CONVERT

【讨论】:

    【解决方案2】:

    要达到您的需要,您需要 CAST 日期吗?

    例如:

    您当前的错误代码:

    select packageid,status+' Date : '+UpdatedOn from [Shipment_Package] 
    

    建议的解决方案:

    select packageid,status + ' Date : ' + CAST(UpdatedOn AS VARCHAR(20))
    from [Shipment_Package] 
    

    MSDN article for CAST / CONVERT

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      要考虑空值,试试这个:

      select packageid, 
          'Status: ' + isnull(status, '(null)') + ', Date : ' 
          + case when UpdatedOn is null then '(null)' else convert(varchar(20), UpdatedOn, 104) end as status_text
      from [Shipment_Package]
      

      【讨论】:

        【解决方案4】:

        将 Datetime 列转换为 sql Server 的 varchar,您可以使用以下代码

        select packageid,status+' Date : '+CONVERT(VARCHAR,UpdatedOn,120) from [Shipment_Package]

        120 代码会将您的日期转换为以下格式:2020-06-12 15:09:00 您可以从this link 使用的其他格式

        【讨论】:

          猜你喜欢
          • 2021-04-12
          • 1970-01-01
          • 1970-01-01
          • 2020-06-11
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          • 2017-04-17
          • 2017-12-16
          相关资源
          最近更新 更多