如何在mssql中将13位时间戳转换为日期和时间格式

时间:2018-05-10 08:21:48

标签: sql sql-server tsql

我正在尝试存储13位数的时间戳,以便在MS SQL表中存储日期时间格式。 我在很多方面都尝试过并且在SO帖子中搜索过没有任何帮助。

输入代码: 1525939481255

必填格式DD-MM-YYYY HH:MM:SS (12 hour time format)

我想将上述13位代码转换为上述格式。 任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

我假设这是以毫秒为单位的unix时间 所以试试这个查询

select CONVERT(VARCHAR(10),DATEADD(SECOND, 1525939481255/1000 ,'1970/1/1'),105)

对不起,我想念时间格式,

试试这个..

select CONVERT(VARCHAR(10),DATEADD(SECOND, 1525939481255/1000 ,'1970/1/1'),105) + ' ' + FORMAT(DATEADD(SECOND, 1525939481255/1000 ,'1970/1/1'),'h:mm:ss tt')

CMIIW, 请告诉我,如果有这个帮助..

答案 1 :(得分:1)

试试这个:

declare varchar(max) myDateTime = select dateadd(second, 1525939481255/1000 + 8*60*60, '19700101');

SELECT  REPLACE(
            REPLACE(
                RIGHT(
                    '0000000000' + 
                        CONVERT(
                        varchar(10), 
                        cast(myDateTime as time(0)), 
                        109),
                10), 
            'PM', 
            ' p.m.'),
        'AM',
        ' a.m.') as 'Time'
 , reverse(Left(myDateTime, 10)) as 'date'

答案 2 :(得分:1)

UNIX time可以转换为正常日期时间,格式为您预期的格式:

DECLARE @DateValue AS BIGINT = 1525939481255;

SELECT  CONVERT(VARCHAR(10), DATEADD(SECOND, @DateValue/1000 ,'1970/1/1'), 105) + ' ' + 
        CONVERT(VARCHAR(15), CAST(DATEADD(SECOND, @DateValue/1000 ,'1970/1/1') AS TIME), 100)

输出:

10-05-2018 8:04AM