ホームページ >データベース >mysql チュートリアル >SQL Server で Bigint UNIX タイムスタンプを DateTime に変換するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。