Вот мое решение, которое, кажется, работает. Проверил вручную, где я проверил, находилась ли метка времени между 1596513600 и 1596599940, и получил тот же результат из решения ниже:
Функция преобразования метки времени в тип datetime (* настраивается для локального time) :
CREATE FUNCTION dbo.fn_ConvertToDateTime (@Datetime int)
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
SQL Заявление:
SELECT *
FROM dbname.dbo.Tablename
WHERE dbo.fn_ConvertToDateTime([DateTime]) >= dateadd(day,datediff(day,1,GETDATE()),0)
AND dbo.fn_ConvertToDateTime([DateTime]) < dateadd(day,datediff(day,0,GETDATE()),0)
Результат вывода показывает только строки, содержащие unix метка времени вчера.