我的表格中有一个字符串字段,包含日期和时间。喜欢这个
20131001094049
现在我必须像09:40那样得到小时和分钟。
我怎样才能轻松搞定?
答案 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