MySQLでUNIX_TIMESTAMP()関数を引数なしで使うと何が返される?
UNIX_TIMESTAMP()関数を引数なしで実行した場合の動作
引数を指定せずにUNIX_TIMESTAMP()関数を実行すると、MySQLは現在の日付と時刻に対応するUnixタイムスタンプを返します。つまり、引数なしで呼び出すことは、NOW()関数を引数としてUNIX_TIMESTAMP()に渡すことと完全に同じ意味になります。
実行例:引数なしとNOW()指定の比較
例えば、引数なしのUNIX_TIMESTAMP()と、NOW()を引数に指定したUNIX_TIMESTAMP()をそれぞれ実行すると、MySQLは同じ結果を返します。
mysql> Select UNIX_TIMESTAMP(); +------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1509405559 | +------------------+ 1 row in set (0.00 sec) mysql> Select UNIX_TIMESTAMP(NOW()); +-----------------------+ | UNIX_TIMESTAMP(NOW()) | +-----------------------+ | 1509405559 | +-----------------------+ 1 row in set (0.00 sec)
FROM_UNIXTIME()関数による結果の検証
上記クエリで得られた結果(1509405559)をFROM_UNIXTIME()関数に渡すことで、この値が実際に現在の日時を表していることを確認できます。MySQLは以下のように日時形式のタイムスタンプを返します。
mysql> Select FROM_UNIXTIME(1509405559); +---------------------------+ | FROM_UNIXTIME(1509405559) | +---------------------------+ | 2017-10-31 04:49:19 | +---------------------------+ 1 row in set (0.00 sec)
まとめ
UNIX_TIMESTAMP()関数は、引数を省略した場合に自動的に現在の日時(NOW()と同等)を基準としてUnixタイムスタンプを生成します。この挙動を理解しておくと、ログの記録時刻やレコードの作成・更新日時を管理する際に便利です。
-
MySQLのINTERVAL()関数で第1引数にNULLを指定した場合の戻り値とは?
INTERVAL()関数の第1引数がNULLだった場合の戻り値MySQLのINTERVAL()関数は、第1引数と残りの引数リストを比較し、第1引数の値がどこまで続く範囲に該当するかを示すインデックスを返す関数です。そして重要なポイントとして、第1引数にNULLを指定した場合、戻り値は必ず-1になります。実際の動作を以下の例で確認してみましょう。mysql> Select INTERVAL(NULL,20,32,38,40,50,55);+--------------------------------------+| INTERVAL(NULL,20,32,38,40,50,55)
-
MySQLのINTERVAL()関数とは?構文と戻り値の仕組みを実例付きで解説
MySQLのINTERVAL()関数は、第1引数とそれ以降の複数の引数を比較し、「第1引数より大きい値」が最初に現れる位置(インデックス)を返す関数です。複数の閾値と一度に大小比較を行いたい場合などに活用できます。 INTERVAL()関数の構文 INTERVAL(N, N1, N2, N3, …) この関数は、第1引数であるNを、残りの引数であるN1、N2、N3…と順番に比較していきます。すべての引数は整数として扱われ、比較結果に応じて以下のような値を返します。 N < N1 の場合 → 0 を返す N < N2 の場合 → 1 を返す N < N3 の場合 → 2