将日期和时间的字符串转换为hh:mm

时间:2014-08-27 12:05:51

标签: sql datetime

我的表格中有一个字符串字段,包含日期和时间。喜欢这个

20131001094049

现在我必须像09:40那样得到小时和分钟。

我怎样才能轻松搞定?

2 个答案:

答案 0 :(得分:2)

我将根据您的字符串假设格式为YYYYMMDDHHMMSS(年,月,日,小时,分钟,秒)。此解决方案适用于SQL Server

考虑到你可以找到穷人修理字符串操作。

SELECT 
    LEFT(RIGHT(20131001094049, 6 ) , 2) + ':' + 
    RIGHT(LEFT(RIGHT(20131001094049, 6 ) , 4),2)

返回09:40

原始日期20131001094049需要使用正确的六个字符094049,然后左侧两个09。然后将它连接到:,然后将结果字符串连接到假定的04(分钟)部分的MM

答案 1 :(得分:2)

由于您的日期和时间信息未以标准DateTime格式存储以进行直接转换,因此您需要依赖字符串操作,即:

    SELECT SUBSTRING('20131001094049', 9, 2) + ':' + 
           SUBSTRING('20131001094049', 11, 2)

要返回完整的DateTime类型,您可以操作整个字符串并使用FORMAT函数(在SQL Server 2012或更高版本中可用):

DECLARE @dt nvarchar(50), @newdt nvarchar(50)
SET @dt = '20131001094049'

SET @newdt = SUBSTRING(@dt, 1, 4) + '-' + SUBSTRING(@dt, 5, 2) + '-' + SUBSTRING(@dt, 7, 2) + ' ' + SUBSTRING(@dt, 9, 2) + ':' + SUBSTRING(@dt, 11, 2) + ':' + SUBSTRING(@dt, 13, 2)
SELECT FORMAT(CONVERT(datetime, @newdt), 'HH:mm')

两者都将返回09:40