MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで区切り文字のない数値や文字列を日付として解釈する方法

区切り文字なしでも日付として認識される

MySQLでは、区切り文字が含まれていなくても、YYYYMMDDHHMMSS または YYMMDDHHMMSS の形式で、日付として意味が通る文字列や数値が指定された場合、それを有効な日付として自動的に解釈します。

以下に、有効な日付と無効な日付の具体例を示します。

有効な日付の例

mysql> Select Timestamp(20171022040536);
+---------------------------+
| Timestamp(20171022040536) |
+---------------------------+
| 2017-10-22 04:05:36       |
+---------------------------+
1 row in set (0.00 sec)

mysql> Select Timestamp('20171022040536');
+-----------------------------+
| Timestamp('20171022040536') |
+-----------------------------+
| 2017-10-22 04:05:36         |
+-----------------------------+
1 row in set (0.00 sec)

mysql> Select Timestamp('171022040536');
+---------------------------+
| Timestamp('171022040536') |
+---------------------------+
| 2017-10-22 04:05:36       |
+---------------------------+
1 row in set (0.00 sec)

上記のクエリは、MySQLが日付値として解釈できる有効な文字列および数値の例です。数値をそのまま渡した場合、文字列として渡した場合、さらに2桁の年(YYMMDDHHMMSS)形式で渡した場合のいずれも、正しく「2017-10-22 04:05:36」という日時として認識されていることがわかります。

無効な日付の例

mysql> Select Timestamp('20171022048536');
+-----------------------------+
| Timestamp('20171022048536') |
+-----------------------------+
| NULL                        |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)

上記のクエリは無効な文字列の例です。分の部分が「85」という存在しない値になっているため、MySQLはNULLを返します。

mysql> Select Timestamp('20171322040536');
+-----------------------------+
| Timestamp('20171322040536') |
+-----------------------------+
| NULL                        |
+-----------------------------+
1 row in set, 1 warning (0.00 sec)

このクエリでも、月の部分が「13」という不正な値になっているため、MySQLはNULLを返します。

まとめ

このようにMySQLは、区切り文字のない日付形式の文字列や数値を柔軟に解釈できますが、月・日・時・分・秒の各値が実際の範囲内(月は01〜12、分は00〜59など)に収まっている必要があります。範囲外の値が含まれる場合はNULLが返され、警告が出力されるため、データの整合性を保つうえで注意が必要です。

  1. MySQLのDATE_FORMAT関数でタイムスタンプから月番号を取得する方法

    MySQLでタイムスタンプ型のカラムから「月の番号だけ」を取り出したい場合、DATE_FORMAT() 関数を使うのが便利です。書式指定子 %m を指定することで、01〜12の形式で月番号を文字列として取得できます。この記事では、実際にテーブルを作成し、データを登録して、月番号を抽出するまでの一連の手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、TIMESTAMP型のカラムを持つテーブルを作成します。mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK,

  2. MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】

    はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol