【问题标题】:Concatenate String + date in SQL Server在 SQL Server 中连接字符串 + 日期
【发布时间】:2017-12-16 13:51:41
【问题描述】:

我有以下数据:

KEY        ID         DATE
123456789  09BA2038   01-01-2017

我想连接它,但保留日期的原始格式。当我尝试时:

CONCAT(Key, '-', ID, '-', DATE) 

它给了我一个输出

123456789-09BA2038-Jan 01 2017 11:00AM

但我希望输出是

123456789-09BA2038-01-01-2017

【问题讨论】:

  • 首先将您的日期转换为正确格式的字符串

标签: sql sql-server concat


【解决方案1】:

如果您使用的是 SQL Server 2012 或更高版本,则可以使用 FORMAT 将日期或日期时间更改为您喜欢的格式的 varchar。

select CONCAT([Key],'-',ID,'-',FORMAT([DATE],'MM-dd-yyyy')) as Key2
from (values (123456789,'09BA2038',convert(date,'2017-01-15',126))) v([Key],ID,[DATE]);

结果:

Key2
123456789-09BA2038-01-15-2017

或者您可以使用 CONVERT 代替美国日期格式的 110 样式。

【讨论】:

    【解决方案2】:

    试试CONCAT(Key, '-', ID, '-', CONVERT(varchar(10),DATE, 110))110 告诉 SQL Server 将日期格式化为“mm-dd-yyyy”(美国风格)。

    有关此外观的更多信息here

    尼尔斯

    【讨论】:

      【解决方案3】:

      您需要使用显式转换来获得所需的日期格式。

      在这种情况下,CONCAT(Key, '-', ID, '-', convert(varchar(10),DATE,105)) 应该可以正常工作。

      您可以在此处找到完整的格式列表:https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

      【讨论】:

      • 谢谢,这份清单确实很有帮助!
      【解决方案4】:

      我认为在这种情况下不使用 concat 会更好 像这样:

      select convert(nvarchar(100),KEY)+'-'+convert(nvarchar(100),ID)+'-'+convert(nvarchar(100),DATE)
      from tableName
      

      【讨论】:

      • 这不会给出问题中所需的格式。
      • @Leonidas199x 为什么?当你连接你的字符串时,数据类型并不重要,在我的请求中它将是 nvarchar ,它与他想要的格式完全一样。如果我错了,我会很高兴你说服我,谢谢!
      • 问题中要求日期的特定格式,您的答案没有给出。运行这个,很明显:SELECT CONVERT(NVARCHAR(100),GETDATE()),CONVERT(NVARCHAR(10),GETDATE(),110)
      • 你为什么宁愿只使用+?当某些值可以允许 NULL 并且您仍想返回某些内容时,CONCAT 似乎更好。 F.e. select concat('x','-y'+null) as v2
      • @LukStorms 我认为concat+ 在这个意义上没有任何不同,也不应该依赖连接null 产生除null 以外的任何东西,因为替代方案是(可怕,非 ANSI,并且)已弃用:docs.microsoft.com/en-us/sql/t-sql/statements/…
      【解决方案5】:

      转换日期,我猜你想要格式 mm-dd-yyyy,如果是这样:

      CONCAT([key],'-',[ID],'-',CONVERT(VARCHAR(10), [DATE], 110))
      

      如果你想要 dd-mm-yyyy 它是:

      CONVERT(VARCHAR(10), [DATE], 105)
      

      【讨论】:

      • 工作就像一个魅力!谢谢:)。
      猜你喜欢
      • 2017-11-01
      • 1970-01-01
      • 2015-02-14
      • 2017-05-11
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多