現在日時を取得する方法

MySQL で現在日時を取得する方法についての解説です。 Oracle では sysdate を使用しますが、MySQL では以下の方法があります。

現在の日付とタイプスタンプを同時に取得する。
NOW()

NOW 関数には別名の関数が3つ用意されています。実行結果に違いはありません。

NOW関数の別名。関数名以外に違いは無い。
CURRENT_TIMESTAMP()
LOCALTIME()
LOCALTIMESTAMP()

実行結果は以下の通り YYYY-MM-HH HH:MI:SS 形式で表示されます。

NOW 関数の実行結果
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2014-07-13 16:56:37 |
+---------------------+
1 row in set (0.00 sec)


mysql>
NOW 関数の別名関数の実行結果
mysql> SELECT CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP();
+---------------------+---------------------+---------------------+
| CURRENT_TIMESTAMP() | LOCALTIME()         | LOCALTIMESTAMP()    |
+---------------------+---------------------+---------------------+
| 2014-07-13 16:57:37 | 2014-07-13 16:57:37 | 2014-07-13 16:57:37 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)

mysql>

これらの関数で取得した日付と時刻は、DATE_FORMAT 関数で書式を整えることができます。

*例えば、取得した日時を YYYYMMDD 形式にしたい場合は、以下のように指定します。
日付を YYYYMMDD 形式にフォーマットする
mysql> SELECT DATE_FORMAT(NOW(), '%Y%m%d');
+------------------------------+
| DATE_FORMAT(NOW(), '%Y%m%d') |
+------------------------------+
| 20140713                     |
+------------------------------+
1 row in set (0.36 sec)

mysql>

DATE_FORMAT 関数で指定した %Y は 4 桁形式の年、%m は 2 桁形式の月( 1 から 9 の場合 0 で前埋め)、%d は 2 桁形式の日付( 1 から 9 の場合 0 で前埋め)を表します。

*日付のフォーマットの詳しい解説については「日時、日付、時刻をフォーマットする方法」のページを参照してください。
更新日: