MySQLで日付値として指定するために必要な文字列・数値の桁数とは?
MySQLで日付値として認識されるための最小桁数
MySQLでは、文字列や数値を日付値として指定する場合、年を4桁で表すか2桁で表すかによって、必要な桁数が異なります。この記事では、TIMESTAMP関数を使った具体例とともに、それぞれのケースで必要な桁数を詳しく解説します。
年を4桁の値として扱う場合:最低8桁が必要
年を4桁の値として考える場合、MySQLが文字列や数値を日付値として認識するには、最低8桁が必要です。さらにマイクロ秒まで保存したい場合は、最大20桁まで指定できます。
20桁の文字列(マイクロ秒あり)の例
mysql> Select TIMESTAMP('20171022040536.100000');
+-----------------------------------+
| TIMESTAMP('20171022040536100000') |
+-----------------------------------+
| 2017-10-22 04:05:36.100000 |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)上記のクエリでは、TIMESTAMP値として20桁の文字列を指定しています。最後の6桁はマイクロ秒を表しています。
8桁の数値(日付のみ)の例
mysql> Select TIMESTAMP(20171022); +---------------------+ | TIMESTAMP(20171022) | +---------------------+ | 2017-10-22 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
このクエリでは、TIMESTAMP値として8桁の数値を指定しています。時刻部分は自動的に「00:00:00」となります。
7桁の場合はNULLが返される
mysql> Select TIMESTAMP(201710); +-------------------+ | TIMESTAMP(201710) | +-------------------+ | NULL | +-------------------+ 1 row in set, 1 warning (0.00 sec)
上記のクエリはNULLを返します。これは、桁数が8桁に満たないためです。
年を2桁の値として扱う場合:最低6桁が必要
一方、年を2桁の値として考える場合は、MySQLが文字列や数値を日付値として認識するのに、最低6桁が必要です。マイクロ秒まで保存したい場合は、最大18桁まで指定できます。
6桁の数値(日付のみ)の例
mysql> Select TIMESTAMP(171022); +---------------------+ | TIMESTAMP(171022) | +---------------------+ | 2017-10-22 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
上記のクエリでは、TIMESTAMP値として6桁の数値を指定しています。「171022」は「2017年10月22日」として解釈されます。
18桁の文字列(マイクロ秒あり)の例
mysql> Select TIMESTAMP('171022040536.200000');
+----------------------------------+
| TIMESTAMP('171022040536.200000') |
+----------------------------------+
| 2017-10-22 04:05:36.200000 |
+----------------------------------+
1 row in set (0.00 sec)このクエリでは、TIMESTAMP値として18桁の文字列を指定しています。ドット(.)の後の最後の6桁がマイクロ秒を表しています。
4桁の場合はNULLが返される
mysql> Select TIMESTAMP(1710); +-----------------+ | TIMESTAMP(1710) | +-----------------+ | NULL | +-----------------+ 1 row in set, 1 warning (0.00 sec)
上記のクエリはNULLを返します。これは、桁数が6桁に満たないためです。
まとめ
| 年の形式 | 最小桁数 | 最大桁数(マイクロ秒あり) |
|---|---|---|
| 4桁の年 | 8桁 | 20桁 |
| 2桁の年 | 6桁 | 18桁 |
MySQLで日付値を文字列や数値として指定する際は、上記の桁数ルールを守ることが重要です。必要な桁数に満たない場合、MySQLはNULLを返し、警告を出力します。特にマイクロ秒まで精度が必要な場合は、小数点以下6桁を追加することを忘れないようにしましょう。
-
MySQLでタイムスタンプから日付を抽出する方法をわかりやすく解説
MySQLでタイムスタンプから日付部分だけを取り出すには?MySQLでタイムスタンプ(timestamp)型の値から日付部分のみを選択・取得したい場合は、組み込み関数の DATE() を使用します。DATE() 関数にタイムスタンプの値を渡すと、時刻部分が取り除かれた「YYYY-MM-DD」形式の日付が返されます。ここからは、実際のテーブル作成からデータ取得までの手順をサンプルとともに見ていきましょう。1. サンプルテーブルを作成するまずは練習用のテーブルを作成します。Id、Title、そしてtimestamp型のBatchTimeカラムを持つテーブルです。mysql> create t
-
MySQLで文字列から日付を抽出する方法|SUBSTRING_INDEX関数の実践的な使い方
MySQLで文字列から日付を抽出するには?MySQLで文字列の中から日付部分だけを取り出したい場合、SUBSTRING_INDEX() 関数を使うのが便利です。この関数は、指定した区切り文字を基準に文字列を分割し、必要な部分を取得できます。ここでは、実際にテーブルを作成し、文章の中に含まれる日付(例:12/31/2018)を抽出する手順を解説します。1. サンプルテーブルを作成するまず、文字列を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> Title text -> );Query OK