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

日付と時刻の間に「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」または半角スペースを使用するようにしましょう。

  1. 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)次に、作成したテーブルの構造

  2. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (