ホームページ > データベース > mysql チュートリアル > SQL Server で Bigint UNIX タイムスタンプを DateTime に変換するにはどうすればよいですか?

SQL Server で Bigint UNIX タイムスタンプを DateTime に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-17 16:36:14
オリジナル
899 人が閲覧しました

How to Convert Bigint UNIX Timestamps to DateTime in SQL Server?

SQL Server: Bigint UNIX タイムスタンプを DateTime に変換する

このガイドでは、SQL Server 内で bigint UNIX タイムスタンプを DateTime 値に効率的に変換する方法を説明します。

主な方法では、DATEADD 関数を使用します。

<code class="language-sql">SELECT DATEADD(SECOND, [unixtime], '19700101')
FROM [Table]</code>
ログイン後にコピー

このクエリは、unixtime 列で表される秒数 (Unix エポック以降) を 1970 年 1 月 1 日の基準日付に加算し、対応する DateTime を生成します。

時代を理解する

日付「19700101」は、UNIX エポック、つまり UNIX タイムスタンプの開始点 (1970 年 1 月 1 日、00:00:00 UTC) を表します。

2038 年問題への対処: 確実な解決策

標準の 32 ビット整数 UNIX タイムスタンプには制限があります。2038 年 1 月 19 日の 03:14:07 UTC にオーバーフローします。 この日付を超えるタイムスタンプを処理するには、次の 2 段階の DATEADD アプローチを採用できます。

<code class="language-sql">DECLARE @t BIGINT = 4147483645;
DECLARE @oneyear INT = 31622400; -- Approximate seconds in a year

SELECT (@t / @oneyear) -- Years to add
SELECT (@t % @oneyear) -- Remaining seconds

-- DateTime calculation for timestamp @t
SELECT DATEADD(SECOND, @t % @oneyear, DATEADD(YEAR, @t / @oneyear, '19700101'));</code>
ログイン後にコピー

このメソッドは、最初に年数と残りの秒数を計算し、次にそれらをエポック日付に順番に適用することで、オーバーフロー エラーを防ぎ、2038 年以降のタイムスタンプの正確な変換を保証します。

以上がSQL Server で Bigint UNIX タイムスタンプを DateTime に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート