【解決方法】エポック データを日付に変換する


私はエポックデータを持っています: 1535525060000
これを 2018 年 8 月 29 日水曜日 12:14:20 PM GMT+05:30 として IST に変換する必要があります。 どうすればこれを達成できますか?

これについて私を助けてください

私が試したこと:

ALTER FUNCTION [dbo].[fn_EpochToDatetime] (@Epoch BIGINT)
RETURNS DATETIME
AS
BEGIN
    DECLARE @Days AS INT, @MilliSeconds AS INT
    SET @Days = @Epoch / (1000*60*60*24)
    SET @MilliSeconds = @Epoch % (1000*60*60*24)

    RETURN (SELECT DATEADD(MILLISECOND, @MilliSeconds, DATEADD(DAY, @Days, '1/1/1970')))
END;


SELECT  [dbo].[fn_EpochToDatetime] (153552506000)

解決策 1

SQL datetime type には「UTC オフセット」値がありません。

あなたのコードはUTCを返します datetime、これは正しく設定されています 2018-08-29 06:44:20. それを別のタイムゾーンに変換したい場合は、タイムゾーンを認識するタイプを使用する必要があります: datetimeoffset.

SQL
CREATE OR ALTER FUNCTION dbo.fn_EpochToDateTimeOffset (@Epoch bigint)
RETURNS datetimeoffset(0)
As
BEGIN
    DECLARE @Days int, @Milliseconds int, @Utc datetimeoffset(0);
    SET @Days = @Epoch / (1000 * 60 * 60 * 24);
    SET @Milliseconds = @Epoch % (1000 * 60 * 60 * 24);
    SET @Utc = DateAdd(millisecond, @Milliseconds, DateAdd(day, @Days, '19700101'));
    Return @Utc At Time Zone 'India Standard Time';
END;
GO
SELECT dbo.fn_EpochToDateTimeOffset(153552506000);
/* 2018-08-29 12:14:20 +05:30 */

AT タイム ゾーン (Transact-SQL) – SQL Server | マイクロソフト ラーン[^]

コメント

タイトルとURLをコピーしました