在 SQL 服务器中连接字符串 + 日期

Concatenate String + date in SQL Server

我有以下数据:

KEY        ID         DATE
123456789  09BA2038   01-01-2017

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

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

它给了我

的输出
123456789-09BA2038-Jan 01 2017 11:00AM

但我希望输出为

123456789-09BA2038-01-01-2017

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

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

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

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

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

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

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

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

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

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

有关此外观的更多信息here

尼尔斯

如果您使用的是 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 样式。