连接SQL Server中的字符串+日期

连接SQL Server中的字符串+日期,sql,sql-server,concat,Sql,Sql Server,Concat,我有以下数据: 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([k

我有以下数据:

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

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

在本例中,CONCATKey“-”,ID“-”,convertvarchar10,DATE,105应该可以正常工作

您可以在这里找到完整的格式列表:

试试CONCATKey,'-',ID,'-',CONVERTvarchar10,DATE,110。110告诉SQL Server将日期格式化为“mm-dd-yyyy”美式

有关此外观的详细信息


Niels

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

选择CONCAT[Key]、'-',ID'-',FORMAT[DATE]、'MM-dd-yyyy'作为键2 根据值123456789、'09BA2038',convertdate、'2017-01-15',126 v[Key],ID[DATE]; 结果:

Key2
123456789-09BA2038-01-15-2017

或者您可以使用110样式作为美国日期格式。

将您的日期转换为正确格式的sting firstWorked as a charm!谢谢:。谢谢,这份名单确实很有帮助!这不会给出问题中所需的格式。@Leonidas199x为什么?数据类型在对字符串进行concating时并不重要,在我的queryt中它将是nvarchar,并且它与他想要的格式完全相同。如果我错了,我会很高兴你能说服我,谢谢!问题中有一个特定的日期格式,你的答案没有给出。运行此命令,很明显:选择CONVERTNVARCHAR100,GETDATE,CONVERTNVARCHAR10,GETDATE,110为什么只使用+?当某些值允许空值,而您仍然希望返回某个值时,CONCAT似乎更好。F.e.选择concat'x','-y'+null作为v2@LukStorms我不认为concat与+在这个意义上有任何不同,也不应该依赖于连接一个null来产生除null以外的任何结果,因为替代方法是可怕的、非ANSI的,并且不推荐使用: