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

时间:2017-07-12 08:35:58

标签: 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

5 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:1)

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

在这种情况下,render() { const { meta: { active, error, submitFailed } } = this.props return ( // ... rendering the input and then some { !active && (error && submitFailed) ? ( <span className="validation-error">{ error }</span> ) : null } // ... rendering the rest ) } 应该可以正常工作。

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

答案 2 :(得分:0)

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

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

如果你想要dd-mm-yyyy,那就是:

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

答案 3 :(得分:0)

试试CONCAT(Key, '-', ID, '-', CONVERT(varchar(10),DATE, 110))110告诉SQL Server将日期格式化为&#39; mm-dd-yyyy&#39; (美式)。

有关此外观的更多信息here

尼尔斯

答案 4 :(得分:-1)

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

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