データベース管理の領域では、エポック番号を人間が読める日付に変換することが必要になることがよくあります。エポック番号は、定義されたエポック以降の時点を表し、MySQL などのデータベース システムに一時データを保存するためによく使用されます。
エポック番号 (1389422614485 など) がある仮定のシナリオを考えてみましょう。特定の時点。この値のデータ型は varchar で、これをわかりやすい日付形式に変換したいと考えています。
詳細な解決策
MySQL でこの変換を実行するには、次のようにします。数学関数と from_unixtime() 関数の組み合わせを活用する必要があります:
mysql> select from_unixtime(floor(1389422614485/1000));
説明
この例では、from_unixtime() 関数を使用して、通常はエポックからのミリ秒を表すエポック番号を日付文字列に変換します。エポック番号はミリ秒の精度を持つように見えるため、floor(1389422614485/1000) を使用してエポックからの秒数に変換します。これは、from_unixtime() が期待する入力です。
Output
------------------------------------------ | from_unixtime(floor(1389422614485/1000)) | ------------------------------------------ | 2014-01-11 12:13:34 | ------------------------------------------
出力指定されたエポック番号に対応する人間が判読できる日付を、'YYYY-MM-DD HH:MM:SS' の形式で表示します。
MySQL 8.0 以降の更新
MySQL バージョン 8.0 以降、from_unixtime() 関数でミリ秒を扱う場合、floor 関数は必要なくなりました。ミリ秒単位のエポック番号を引数として直接指定できます:
mysql> select from_unixtime(1594838230234/1000);
これにより、次の出力が得られます:
------------------------------------------ | from_unixtime(1594838230234/1000) | ------------------------------------------ | 2020-07-15 18:37:10.2340 | ------------------------------------------
この洗練されたクエリのバージョンでは、ナノ秒の精度もサポートされるようになりました。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3