2015-12-03 55 views
1

如何在SQL中将bigint转换为日期时间格式? 如:20130805092330到2013年8月5日09:23:30.000Bigint到Datetime

+0

这看起来更像是一个concated日期时间值比bigint表示。 – Harsh

+2

您可以选择使用msdb.dbo.agent_datetime,例如SELECT msdb.dbo.agent_datetime(LEFT([value],8),RIGHT([value],6)),这似乎是最简单的方法。 – ZLK

回答

0

这是不漂亮,但这个是我将如何处理这个问题:如果有人有更好的办法,我”知道

SELECT CAST(SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),1,8) + ' ' + 
SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),9,2) + ':' + 
SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),11,2) + ':' + 
SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),13,2) AS DATETIME) 

我想知道。

0

你BIGINT数据没有时间戳格式,可以拆分BIGINT:8 - 6(日期时间) 试试这个:

DECLARE 
    @bigint BIGINT = 20130805092330 
    ,@datetime DATETIME 
    ,@time TIME 
SET @datetime = CONVERT(DATETIME, LEFT(@bigint,8)) 

SET @time = CONVERT(TIME, LEFT(RIGHT(@bigint, 6), 2) + ':' 
          + LEFT(RIGHT(@bigint, 4), 2) + ':' 
          + RIGHT(@bigint, 2)) 
SET @datetime = @datetime + @time 
SELECT @datetime 

结果:

2013-08-05 09:23:30.000