日付と時刻の間に「T」やスペース以外の文字を使うとMySQLは何を返す?
TIMESTAMP関数での不正な区切り文字の扱い
MySQLでは、日付と時刻をつなぐ区切り文字として通常「T」または半角スペースが使用されます。しかし、これら以外の文字(例えば「W」など)を区切りとして挿入した場合、MySQLは正しい日付部分とともに、時刻部分をすべてゼロ(00:00:00)として返します。
具体例:文字「W」を区切りに使用した場合
以下の例では、日付「2017-10-20」と時刻「06:10:36」の間に、「T」やスペースの代わりに文字「W」を挿入しています。
mysql> Select TIMESTAMP('2017-10-20W06:10:36');
+----------------------------------+
| TIMESTAMP('2017-10-20W06:10:36') |
+----------------------------------+
| 2017-10-20 00:00:00 |
+----------------------------------+
1 row in set, 1 warning (0.00 sec)結果の解釈
出力結果を見ると、日付部分「2017-10-20」は正しく認識されていますが、時刻部分は「00:00:00」とすべてゼロになっています。これは、規定外の区切り文字が使われたために時刻部分の解析が失敗し、無効な値として扱われたことを示しています。また、「1 warning」が出力されていることからも、クエリの処理中に何らかの警告が発生していることが分かります。
このように、TIMESTAMP関数で正確な日時を取得したい場合は、日付と時刻の区切りには必ず「T」または半角スペースを使用するようにしましょう。
-
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 (