MySQLのNOW()関数とCURDATE()関数の違いとは?使い分けのポイントを解説
MySQLには現在の日付や時刻を取得するための関数がいくつか用意されています。その中でも特に頻繁に使われるのが NOW() と CURDATE() の2つです。どちらも「現在」に関する情報を返しますが、返される値に重要な違いがあります。
CURDATE()関数:現在の日付だけを返す
名前の通り、CURDATE()(CURRENT DATE)関数は現在の日付のみを返します。時刻の情報は含まれず、戻り値の形式は 'YYYY-MM-DD' です。
mysql> select CURDATE(); +------------+ | CURDATE() | +------------+ | 2017-10-28 | +------------+ 1 row in set (0.00 sec)
NOW()関数:日付と時刻の両方を返す
一方、NOW() 関数は現在の日付と時刻の両方を返します。戻り値の形式は 'YYYY-MM-DD HH:MM:SS' となり、秒単位までの時刻情報が含まれます。
mysql> Select NOW(); +---------------------+ | NOW() | +---------------------+ | 2017-10-28 09:10:16 | +---------------------+ 1 row in set (0.00 sec)
2つの関数の違いまとめ
| 関数名 | 返される値 | 形式 |
|---|---|---|
CURDATE() | 現在の日付のみ | YYYY-MM-DD |
NOW() | 現在の日付と時刻 | YYYY-MM-DD HH:MM:SS |
使い分けのポイント
- 日付単位で記録・集計したい場合:誕生日や登録日など、時刻が不要なデータには
CURDATE()が適しています。 - 正確な時刻まで記録したい場合:ログの作成時刻や更新タイムスタンプなどには
NOW()を使用します。
また、NOW() と同じ動作をする類似関数として CURRENT_TIMESTAMP や LOCALTIME() があり、CURDATE() には CURRENT_DATE という同義の関数が存在します。用途に応じて適切な関数を選ぶことで、意図した通りのデータを正確に扱うことができます。
-
MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?
結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。それでは、実際にテーブルを作成して確認してみましょう。BOOLEAN型でテーブルを作成するmysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (