PHP と MySQL とマイクロ秒精度

PHP とマイクロ秒

  • 経過秒数を int で返すものだと、マイクロ秒は切り捨てられる

    • date()
    • \DateTime::getTimestamp()
  • マイクロ秒までの精度で取りたい場合、次のいずれかでやる

    • 小数点以下を含む秒として扱う(例)1.234567秒
    • マイクロ秒を整数として扱う(例)microtime(true)
  • 現在時刻をマイクロ秒精度で取りたい場合 microtime(true) を使うと良い

PHP の format 文字列

PHP: date - Manual

  • u マイクロ秒 (PHP 5.2.2 で追加)。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータは integer 型だからです。 一方 DateTime をマイクロ秒つきで作成した場合は、 DateTime::format() はマイクロ秒にも対応しています。

  • v ミリ秒 (PHP 7.0.0 で追加) Same note applies as for u.

PHP の日時補助ライブラリ Carbon での実装

MySQL の time, datetime, timestamp

MySQL :: MySQL 5.6 リファレンスマニュアル :: 11.1.2 日付と時間型の概要

  • MySQL 5.6.4 以降では、マイクロ秒 (6 桁) までの精度を持つ TIME、DATETIME、および TIMESTAMP 値の小数秒に対応できるようになりました。

  • fsp 値を指定する場合、0 から 6 の範囲にする必要があります。0 の値は、小数部がないことを表します。省略した場合、デフォルトの精度は 0 です。(これは、以前の MySQL バージョンと互換性を保つため、標準 SQL のデフォルトである 6 とは異なっています。)