PHP とマイクロ秒
経過秒数を int で返すものだと、マイクロ秒は切り捨てられる
- date()
- \DateTime::getTimestamp()
マイクロ秒までの精度で取りたい場合、次のいずれかでやる
- 小数点以下を含む秒として扱う(例)
1.234567秒
- マイクロ秒を整数として扱う(例)microtime(true)
- 小数点以下を含む秒として扱う(例)
現在時刻をマイクロ秒精度で取りたい場合 microtime(true) を使うと良い
- How to get current time in milliseconds in PHP? - Stack Overflow
- (true) にすると返り値が float なのは php の 整数型は基本的に最大値が 32bit の最大だからかと思われる
PHP の format 文字列
u
マイクロ秒 (PHP 5.2.2 で追加)。 date() の場合、これは常に 000000 となることに注意しましょう。というのも、 この関数が受け取るパラメータは integer 型だからです。 一方 DateTime をマイクロ秒つきで作成した場合は、 DateTime::format() はマイクロ秒にも対応しています。v
ミリ秒 (PHP 7.0.0 で追加) Same note applies as foru
.
PHP の日時補助ライブラリ Carbon での実装
- 2018/02 に ミリ秒から Carbon を生成する関数が merge された
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 とは異なっています。)