2017-07-12 32 views
1

,我有以下数据:置字符串+日期在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 
+0

将您的日期转换为正确格式的刺痛首先 – Jens

回答

0

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

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

如果你想DD-MM-YYYY是:

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

工作就像一个魅力!谢谢 :)。 – PRIME

-1

我想不会使用Concat的是在这种情况下 这样更好:

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

这不会给出问题中所需的格式。 – Leonidas199x

+0

@ Leonidas199x为什么?数据类型并不重要,当你拼接你的字符串时,它将在我的quert中成为nvarchar,而且它和他想要的格式完全一样。如果我错了,我会很高兴你说服我,谢谢! – dood

+0

问题中有一个特定的日期格式,你的回答没有给出。运行这个,很明显:SELECT CONVERT(NVARCHAR(100),GETDATE()),CONVERT(NVARCHAR(10),GETDATE(),110) – Leonidas199x

0

尝试CONCAT(Key, '-', ID, '-', CONVERT(varchar(10),DATE, 110))110通知SQL Server将日期格式设置为'mm-dd-yyyy'(美式)。

有关此外观的更多信息here

尼尔斯

2

如果你使用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 

或者你可以而不是使用110型适用于美国的日期格式使用CONVERT

相关问题