[ad_1]
私はエポックデータを持っています: 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 */
[ad_2]
コメント