[MySQL] DATE/CURDATE関数を使ってSQLで本日の日付を表現する方法

スポンサーリンク

MySQL

今回はMySQLのDATEとCURDATE関数を使って

スポンサーリンク

本日の日付を取得する方法

を書いてみます。

というのも、私も MySQL DATE 本日、とか今日、todayとかで調べてみたのですがほしい情報がすんなりと手に入る記事がなかったために、皆さんにも参考にしていただければなと思って書きます。

MySQLのDATE関数で本日の日付を取得する

あえてシンプルに!!

答え1:

SELECT CURDATE();

答え2:

SELECT DATE(NOW());

シンプルすぎて記事になりませんwwww これで終わりですwwww

あ、でも、やっぱり記事なので少し書いておきたいと思います。ヒャッホーイ

DATE関数の使い方

http://dev.mysql.com/doc/refman/5.1-olh/ja/date-and-time-functions.html#function_date
mysql> SELECT DATE('2014-01-15 09:00:00');
+-----------------------------+
| DATE('2014-01-15 09:00:00') |
+-----------------------------+
| 2014-01-15                  |
+-----------------------------+
1 row in set (0.00 sec)

mysql>

上記のとおりDATE関数の「()」の中には 日付 と 時刻 が入力されている必要があります。
なので、本日の日付を返してほしい場合には日付と時刻を返す NOW() を中に入れてあげればいいんですね。

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2014-01-15 17:05:43 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT DATE(NOW());
+-------------+
| DATE(NOW()) |
+-------------+
| 2014-01-15  |
+-------------+
1 row in set (0.00 sec)

mysql>

CURDATE関数の使い方

http://dev.mysql.com/doc/refman/5.1-olh/ja/date-and-time-functions.html#function_curdate
mysql> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2014-01-15 |
+------------+
1 row in set (0.00 sec)

mysql>
mysql> SELECT CURDATE() + 3;
+---------------+
| CURDATE() + 3 |
+---------------+
|      20140118 |
+---------------+
1 row in set (0.00 sec)

mysql>
mysql> SELECT CURDATE() - 3;
+---------------+
| CURDATE() - 3 |
+---------------+
|      20140112 |
+---------------+
1 row in set (0.00 sec)

mysql>

CURDATE()だけで本日の日付になりますが、それに「+」や「-」を用いて日にちを足したり引いたりの日付計算もできます。
計算を行った場合は yyyymmdd の形式で表示されます。


MySQLのSQL文だけで行える時間の計算は本当に本当に本当にたくさんあります。驚くぐらい便利です!

「DBからSELECTしてきた情報をPHPでいじればいいんでしょ?」

「はぁ?( ゚д゚)ポカーン」

PHPで処理処理する前に
SQLで解決できたら相当楽ですよね?

ぜひMySQLのページを覗いて学習してみてください!すごく便利です!

以上

参考:

MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 7.6 日付時刻関数

コメント

  1. くりくり より:

    こんにちは
    CentOS5.10のmysql5.5にバージョンアップやってみました。
    結果、
    mysql5.5のmy.cnfのパス
    /opt/rh/mysql55/root/etc/my.cnf

    ログ
    [root@www log]# ll /var/log/ |grep mysq
    -rw-r—– 1 mysql mysql 2752 1月 23 10:54 mysql51-mysqld.log
    -rw-r—– 1 mysql mysql 3710 1月 23 10:55 mysql55-mysqld.log
    -rw-r—– 1 mysql mysql 1315 1月 23 10:48 mysqld.log

    sclコマンドいれたり、どっかのサードパーティ入れたほうが早くていいかもしれません。

  2. trippyboy より:

    こんにちは

    ESXiの運用変更に久々にアレルギーがでる情報をネット検索して頭に詰め込んでるtrippyboyです(^^;

    mysql5.5にされましたか! 問題なく動いているようでよかったです・・・ ってえ!?
    confファイルの場所、めちゃくちゃわかりにくいですねww 管理者変わったら大変そう(笑

    MariaDBちゃんにしちゃいましょうよ~(←せっかく5.5に乗り換えた人に言う言葉じゃないですけどw

  3. くりくり より:

    こんにちは上記のはテスト環境でやりました。今回は実サーバーです。

    Mariaちゃんはまだ知名度がいまいちなんで、ここはoracleのせいでビッチになりつつあるmyちゃんです。
    ということでサーバ一台を5.5にしてみました。まだmariaDBもmysqlもほとんどかわらないので導入の説明をするのに楽だったからです。

    デザイン側からmysqlでwordpressがどうたらこうたらといわれていましたからね。
    問題があるとすればphpの処理でありあんまりmysqlは関係ないかなとおもいます。実際slow queryもでていませんでした。
    いずれにせよ5..0.97よりは性能があがっているし、これでいいのかなと思います。

  4. trippyboy より:

    くりくりさん

    おはようございます!
    wikipediaからもってきましたが、MySQLがオラクルのせいげビッチになりつつあるっていう流れはここら辺ですよね。

    2008年7月1日 – サン・マイクロシステムズ株式会社がMySQL株式会社(MySQLの日本法人)を吸収合併。
    2010年6月1日 – 日本オラクル株式会社がサン・マイクロシステムズ株式会社を統合。
    http://ja.wikipedia.org/wiki/MySQL#.E6.AD.B4.E5.8F.B2

    オラクルとMySQLはそれぞれ別であって良いと思うのですが、今後はどうなるんでしょうか。
    MariaDBとして存続するべくチームが発足している時点で、両者の目標は少なからずとも違うのでしょうね。

    >デザイン側からmysqlでwordpressがどうたらこうたらといわれていましたからね。
    MySQLかMariaDBかは、使っている側からは現状わからないと思いますけど、何かあるんでしょうね

    そうですね、私は性能がよくなっているかなんて確認せずに使っていますww

タイトルとURLをコピーしました