64ビットUbuntuシステムを使用しています。
現在、MariaDBを組み込んだプロジェクトに取り組んでいます。タイムスタンプ技術をプロジェクトに導入して、さまざまなタイムゾーンで正しい時刻を受け取るようにする予定です。
タイムスタンプに関する2038年問題に関する記事を聞いて読んだことがあります。多くの記事では、64ビットシステムを使用して「ビット」をより多く購入することを提案しています。
この「ビット」はどれくらいの時間を指しているのでしょうか?最後までWebアプリケーションを管理できるほどの長さですか?そうでない場合は、たった2年の延長のように見えますが、2040年になると、適切に動作しないアプリケーションがあるのでしょうか?
文字通り「ビット」を購入するオプションがある場合、つまり、符号付き32ビット整数から符号なし32ビット整数への転送がある場合は、2106でも機能し続けます。
64ビットへの転送は「やや良い」です。数千億年の解像度があります。
Ubuntuはこれを行います。
$ uname -p
x86_64
$ date --date=9090-01-01 +%s
224685532800
ただし、それはOSレベルです。 Ubuntuが時刻に64ビット整数を使用しているからといって、MySQL/MariaDBがタイムスタンプをstoreに使用するわけではありません。 2038年を過ぎた日付が重要な場合は、すぐにテストを開始してください。
実際、時間を節約できます。まだ壊れています。 このバグは10年以上前に報告されました しかし、メインテストは64ビット整数で失敗します。
mysql> select from_unixtime(2548990800);
+---------------------------+
| from_unixtime(2548990800) |
+---------------------------+
| NULL |
+---------------------------+
1 row in set (0.00 sec)
これもストレージではありません。それは少し哀れです。
(そして、はい、それはMariaDBバージョン10.1で実行されました)
整数として保存しないでください。 ISO 8601 形式の日付文字列として保存します。これは、インターネット全体で使用される標準形式です。
9999-12-31T23:59:59+00:00