Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 到日期时间的Bigint_Sql_Sql Server_Datetime_Type Conversion - Fatal编程技术网

Sql 到日期时间的Bigint

Sql 到日期时间的Bigint,sql,sql-server,datetime,type-conversion,Sql,Sql Server,Datetime,Type Conversion,如何在SQL中将bigint格式转换为datetime格式? 例如:20130805092330到2013-08-05 09:23:30.000这并不漂亮,但我会这样处理这个问题: SELECT CAST(SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),1,8) + ' ' + SUBSTRING(CONVERT(NVARCHAR(16),20130805092330),9,2) + ':' + SUBSTRING(CONVERT(NVARCHA

如何在SQL中将bigint格式转换为datetime格式?
例如:20130805092330到2013-08-05 09:23:30.000这并不漂亮,但我会这样处理这个问题:

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)

如果有人知道我想知道的更好的方法。

这并不漂亮,但我会这样处理这个问题:

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)

如果有人知道我想知道的更好的方法。

您的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

您的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

这看起来更像是一个具体的日期时间值,而不是一个bigint表示形式。您可以选择使用msdb.dbo.agent_datetime,例如选择msdb.dbo.agent_datetime(左([value],8),右([value],6)),这似乎是最简单的方法。这看起来更像是一个具体的日期时间值,而不是一个bigint表示。您可以选择使用msdb.dbo.agent_datetime,例如选择msdb.dbo.agent_datetime(左([value],8),右([value],6)),这似乎是最简单的方法。