Как я могу преобразовать метку времени UNIX (bigint) в DateTime в SQL Server?
попробуйте:
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
Вот так
добавьте дату и время 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
Это сделает это:
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 способен сохранять точность до микросекунд.