Sql 从字符串计算日期时间?
我在csv文件中有一个日期和时间,如下所示:Sql 从字符串计算日期时间?,sql,sql-server-2008,Sql,Sql Server 2008,我在csv文件中有一个日期和时间,如下所示:20140618123022,列格式为datetime,问题是将此字符串转换为“2014-06-18 12:30:22”datetime格式的最佳方式是什么 我将创建一个池过程来执行此操作 我在考虑使用或RIGHT()和LEFT()和串联,这是正确的方法吗 CONVERT([datetime],(((((((((CONVERT([varchar](4),[data],(0))+'-')+substring([data],(5), (2
20140618123022
,列格式为datetime
,问题是将此字符串转换为“2014-06-18 12:30:22”datetime格式的最佳方式是什么
我将创建一个池过程来执行此操作
我在考虑使用或RIGHT()
和LEFT()
和串联
,这是正确的方法吗
CONVERT([datetime],(((((((((CONVERT([varchar](4),[data],(0))+'-')+substring([data],(5),
(2)))+'-')+substring([data],(7),(2)))+' ')+substring([data],(9),
(2)))+':')+substring([data],(11),(2)))+':')+substring([data],(13),(2)),(0))
或者这个
select convert(datetime,(left(@a,8)+' '+substring(@a,9,2)+':'+substring(@a,11,2)+':'+right(@a,2)))
--返回
您可以使用STUFF函数,如下所示:
DECLARE @D CHAR(14) = '20140619123022'
SELECT STUFF(
STUFF(
STUFF(
STUFF(
STUFF(@D,5,0,'-')
,8,0,'-')
,11,0,' ')
,14,0,':')
,17,0,':')
您必须确保您的字符串长度是一致的,即它是一个14个字符长的字符串。
小提琴链接:最佳方式取决于数据库。您使用的是什么数据库?这里有一篇文章开始:您的最佳选择可能是一个CLR,以实现您的目标。不需要将年、月和日分开,正确解析“20140618 12:30:22”
2014-06-18 12:30:22.000
DECLARE @D CHAR(14) = '20140619123022'
SELECT STUFF(
STUFF(
STUFF(
STUFF(
STUFF(@D,5,0,'-')
,8,0,'-')
,11,0,' ')
,14,0,':')
,17,0,':')