Как я могу преобразовать bigint (метка времени UNIX) к дате и времени в SQL Server?

Как я могу преобразовать метку времени UNIX (bigint) в DateTime в SQL Server?

93
задан Salman A 17 September 2018 в 09:13
поделиться

3 ответа

попробуйте:

CREATE FUNCTION dbo.fn_ConvertToDateTime (@Datetime BIGINT)
RETURNS DATETIME
AS
BEGIN
    DECLARE @LocalTimeOffset BIGINT
           ,@AdjustedLocalDatetime BIGINT;
    SET @LocalTimeOffset = DATEDIFF(second,GETDATE(),GETUTCDATE())
    SET @AdjustedLocalDatetime = @Datetime - @LocalTimeOffset
    RETURN (SELECT DATEADD(second,@AdjustedLocalDatetime, CAST('1970-01-01 00:00:00' AS datetime)))
END;
GO
55
ответ дан 24 November 2019 в 06:10
поделиться

Вот так

добавьте дату и время Unix (эпоха) к базовой дате в секундах

, это на данный момент получит это (2010-05-25 07: 56: 23.000)

 SELECT dateadd(s,1274756183,'19700101 05:00:00:000')

Если вы хотите пойти в обратном направлении, взгляните на http://wiki.lessthandot.com/index.php/Epoch_Date

22
ответ дан 24 November 2019 в 06:10
поделиться

Это сделает это:

declare @UNIX_TIME int
select @UNIX_TIME = 1111111111
-- Using dateadd to add seconds to 1970-01-01
select [Datetime from UNIX Time] = dateadd(!precision!,@UNIX_TIME,'1970-01-01')

Вместо! Precision! используйте: ss, ms или mcs в зависимости от точности отметки времени. Bigint способен сохранять точность до микросекунд.

7
ответ дан 24 November 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: