2

我有一个 varchar 20130909132512,我想把它转换成一个日期2013-09-09

尝试时我不断收到错误消息

select convert(datetime,'20130909132512',105)

我试图避免使用

select convert(datetime,SUBSTRING('20130909132512',0,8),105)

如果可能的话。关于如何做到这一点的任何想法?

4

2 回答 2

3

您可以使用STUFF将您的 varchar 转换为20130909 13:25:12

Declare @a Varchar(20)
Select @a = '20130909132512'
select convert(datetime,
              STUFF(STUFF(STUFF(@a,13,0,':'),11,0,':'),9,0,' ')
              ,105)
于 2013-09-20T16:48:29.050 回答
1

无论您使用 bummi 的STUFF方法还是继续使用SUBSTRING,无论您做什么,都必须预先格式化字符串。

在这种情况下,SUBSTRING会执行得更快一点

SELECT CONVERT(date, SUBSTRING('20130909132512', 0, 9), 20)

但是,如果您想要格式为 2013-09-09 的日期,您需要使用“20”作为转换样式。

于 2013-09-20T17:10:52.487 回答