MySQLでミリ秒・マイクロ秒の精度は使える?バージョン5.6.4以降の小数秒サポートを解説
MySQLのミリ秒・マイクロ秒精度サポートについて
かつてのMySQL(バージョン5.6.4以前)では、ミリ秒やマイクロ秒といった小数秒の精度を扱うことができませんでした。しかし、現在のMySQLでは、TIME型・DATETIME型・TIMESTAMP型においてミリ秒/マイクロ秒の精度が正式にサポートされています。
公式ドキュメントには次のように記載されています。
「MySQLはTIME、DATETIME、TIMESTAMPの値に対して小数秒をサポートし、最大マイクロ秒精度まで扱うことができます」
MySQLのバージョンを確認する方法
お使いの環境で小数秒が利用できるかどうかは、まずMySQLのバージョンを確認しましょう。バージョンは version() 関数で簡単に調べられます。
mysql> SELECT version();
実行結果は以下のとおりです。
+-----------+| version() |+-----------+| 8.0.12 |+-----------+1 row in set (0.01 sec)
DATEDIFF関数で日付の差分を確認する
次に、日付の差分を求める DATEDIFF() 関数の構文を見てみましょう。
mysql> SELECT DATEDIFF(now(),now());
同じ日時同士を比較しているため、結果は0になります。
+-----------------------+| DATEDIFF(now(),now()) |+-----------------------+| 0 |+-----------------------+1 row in set (0.03 sec)
now(6)でマイクロ秒まで表示する
小数秒の精度を実際に確認するには、NOW() 関数に引数を指定します。引数に 6 を渡すと、マイクロ秒(小数点以下6桁)まで表示されます。
mysql> SELECT now(6);
実行結果は以下のとおり、マイクロ秒まで含めた日時が取得できます。
+----------------------------+| now(6) |+----------------------------+| 2018-11-11 17:13:25.485429 |+----------------------------+1 row in set (0.00 sec)
まとめ
MySQL 5.6.4以降では、TIME・DATETIME・TIMESTAMP型で最大マイクロ秒精度の小数秒がサポートされています。古いバージョンから移行する場合は、カラム定義に DATETIME(6) のように精度を指定することで、ミリ秒・マイクロ秒単位のデータを正確に保存・取得できるようになります。高精度な時刻管理が必要なシステムでは、ぜひ活用してみてください。
-
MySQLをサポートする主要なパッケージと開発者一覧
MySQLをサポートする主要なパッケージとはMySQLは単体で動作するデータベースサーバーですが、実際の開発では、さまざまなプログラミング言語やミドルウェアとの連携が欠かせません。本記事では、MySQLと組み合わせて多くのユーザーに利用されている重要なAPI・パッケージ・アプリケーションの作者やメンテナー、そしてそれぞれの貢献内容を紹介します。主要な貢献者とその成果Tim Bunce / Alligator Descartes ― DBD(Perl)インターフェース両名は、Perlからデータベースへ接続するためのDBD(Database Driver)インターフェースの開発に貢献しました。この
-
C++が配列を返す関数をサポートしない理由を解説
C++では、関数から配列そのものを返すことができません。なぜそうなっているのか、具体的なプログラム例を見ながら解説します。問題となるサンプルコードまず、次のプログラムを見てください。ローカル配列のアドレスを返そうとしている例です。#include <iostream> using namespace std; int* Array() { int a[100]; a[0] = 7; a[1] = 6; a[2] = 4; a[3] = 3; return a; // ローカル変数のアドレスを返している } int main()