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 到日期时间的主要内容,如果未能解决你的问题,请参考以下文章

SQL-将BIGINT(20)转换为日期时间数据类型

Mysql中时间日期使用date类型好还是bigint时间戳好

使用 mySQL 中的行聚合和操作将 BigInt 时间戳转换为真实日期

如何将 bigint 字段格式化为 Postgresql 中的日期?

将 bigint 转换为日期(月份名称)

asp怎么把mysql中bigint转换成日期啊? 比如bigint值为1321796701 怎么转换成日期啊