我有一个 varchar 20130909132512
,我想把它转换成一个日期2013-09-09
尝试时我不断收到错误消息
select convert(datetime,'20130909132512',105)
我试图避免使用
select convert(datetime,SUBSTRING('20130909132512',0,8),105)
如果可能的话。关于如何做到这一点的任何想法?
我有一个 varchar 20130909132512
,我想把它转换成一个日期2013-09-09
尝试时我不断收到错误消息
select convert(datetime,'20130909132512',105)
我试图避免使用
select convert(datetime,SUBSTRING('20130909132512',0,8),105)
如果可能的话。关于如何做到这一点的任何想法?
您可以使用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)
无论您使用 bummi 的STUFF
方法还是继续使用SUBSTRING
,无论您做什么,都必须预先格式化字符串。
在这种情况下,SUBSTRING
会执行得更快一点
SELECT CONVERT(date, SUBSTRING('20130909132512', 0, 9), 20)
但是,如果您想要格式为 2013-09-09 的日期,您需要使用“20”作为转换样式。