Bigint 到日期时间
Posted
技术标签:
【中文标题】Bigint 到日期时间【英文标题】:Bigint to Datetime 【发布时间】:2016-03-07 11:41:30 【问题描述】:如何在 SQL 中将 bigint 转换为日期时间格式? 例如:20130805092330 到 2013-08-05 09:23:30.000
【问题讨论】:
这看起来更像是一个连接的日期时间值,而不是一个 bigint 表示。 您可以选择使用 msdb.dbo.agent_datetime 例如SELECT msdb.dbo.agent_datetime(LEFT([value], 8), RIGHT([value],6)),这似乎是最简单的方法。 【参考方案1】:这并不漂亮,但这是我解决这个问题的方法:
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)
如果有人知道更好的方法,我想知道。
【讨论】:
【参考方案2】:你的 bigint 数据不是时间戳格式,你可以拆分 bigint: 8 - 6 (date - time) 试试这个:
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
【讨论】:
以上是关于Bigint 到日期时间的主要内容,如果未能解决你的问题,请参考以下文章
Mysql中时间日期使用date类型好还是bigint时间戳好
使用 mySQL 中的行聚合和操作将 BigInt 时间戳转换为真实日期