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

複合INTERVAL単位の値セットに1つの値のみを指定した場合、MySQLは何を返すのか?

複合INTERVAL単位(例:YEAR_MONTH)の値セットに1つの値のみを指定した場合、MySQLは複合INTERVAL単位の中で最も右側にある単位を基準として処理を行います。つまり、囲まれた値セット内に提供された単一の値をもとに、その右側の単位についてのみ間隔の計算が実行され、その結果が返されます。

以下の例で具体的な動作を確認してみましょう。

mysql> Select TIMESTAMP('2017-10-22 04:05:36' + INTERVAL '2 ' year_month) AS 'Only Month Value Changed';
+--------------------------+
| Only Month Value Changed |
+--------------------------+
| 2017-12-22 04:05:36      |
+--------------------------+
1 row in set (0.00 sec)

上記のクエリでは、複合INTERVAL単位「YEAR_MONTH」に対して、単一の値「2」だけが指定されています。この場合、MySQLはYEAR_MONTHの構成要素のうち最も右側にある「月(MONTH)」を対象とみなし、元の日時「2017-10-22 04:05:36」の月に2を加算します。その結果、月が10から12へと変更された「2017-12-22 04:05:36」が出力されました。

注意点

このように、複合INTERVAL単位に1つの値しか渡さないと、意図しない単位だけが更新される可能性があります。年と月の両方を同時に変更したい場合は、「'2-2'」のようにハイフンで区切った形式で値を指定する必要があります。複合INTERVAL単位を使用する際は、値の形式と適用される単位の順序に十分注意しましょう。

  1. MySQLでNOT NULLの値に対して1を設定する方法(IF関数とIS NOT NULLの使い方)

    MySQLでNOT NULLの値に1を設定するにはMySQLでは、IS NOT NULL演算子とIF()関数を組み合わせることで、値がNULLでない場合に「1」、NULLの場合に「0」を返すことができます。データの存在チェックやフラグ管理など、さまざまな場面で活用できる便利なテクニックです。基本構文NOT NULLかどうかを判定して1を設定する基本構文は以下のとおりです。select if( is not NULL,1,0) as anyAliasName;実際に動作するクエリを見てみましょう。mysql> select if( is not NULL,1,0);このクエリを実行すると、

  2. MySQLで最初の3件のレコードに特定の値を設定する方法

    MySQLで、テーブルの最初の3件のレコードだけに特定の値を設定したい場合は、UPDATE文と組み合わせて LIMIT 3 を使用します。MySQLのUPDATE文は ORDER BY 句と LIMIT 句をサポートしているため、更新対象の行数を簡単に制御できます。ここでは、実際の手順をサンプルコードとともに解説します。 サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable1968     (     Id int NOT NULL AUTO_I