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

MySQLで日付の「日」の部分だけを更新する方法

MySQLでは、日付型(DATE)カラムのうち「日」の部分だけを一括で変更したいケースがあります。たとえば、入場日や登録日の月と年はそのまま維持しつつ、日にちだけを揃えたい場合などです。この記事では、DATE_FORMAT関数を使って日付の日部分のみを更新する方法を、実際のSQL例とともにわかりやすく解説します。

1. サンプルテーブルの作成

まず、日付を格納するためのテーブルを作成します。

mysql> create table DemoTable
-> (
-> AdmissionDate date
-> );
Query OK, 0 rows affected (1.38 sec)

2. レコードの挿入

次に、INSERT文を使ってサンプルデータをいくつか追加します。

mysql> insert into DemoTable values('2019-05-12');
Query OK, 1 row affected (0.52 sec)

mysql> insert into DemoTable values('2019-05-18');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('2019-04-19');
Query OK, 1 row affected (0.42 sec)

3. 現在のデータを確認

SELECT文ですべてのレコードを表示して、更新前の状態を確認しておきましょう。

mysql> select *from DemoTable;

出力結果

+---------------+
| AdmissionDate |
+---------------+
| 2019-05-12 |
| 2019-05-18 |
| 2019-04-19 |
+---------------+
3 rows in set (0.00 sec)

4. 日部分のみを更新するクエリ

以下が、MySQLの日付の「日」の部分だけを更新するクエリです。ここでは、カラム内のすべての日付に対して、同じ日(25日)を設定しています。

mysql> update DemoTable
-> set AdmissionDate=date_format(AdmissionDate,'%Y-%m-25');
Query OK, 3 rows affected (0.44 sec)
Rows matched: 3 Changed: 3 Warnings: 0

ポイント: DATE_FORMAT関数の書式指定子 %Y(年)と %m(月)には元の日付の値がそのまま適用され、「日」の部分のみ固定値の 25 に置き換えられます。このように書式文字列の中に任意の数値を埋め込むことで、特定の部分だけを自由に変更できます。

5. 更新後のデータを確認

もう一度すべてのレコードを表示して、正しく更新されたか確認しましょう。

出力結果

+---------------+
| AdmissionDate |
+---------------+
| 2019-05-25 |
| 2019-05-25 |
| 2019-04-25 |
+---------------+
3 rows in set (0.00 sec)

ご覧のとおり、年と月は元のまま保たれ、「日」の部分だけがすべて「25」に更新されました。

まとめ

MySQLで日付の一部だけを変更したい場合は、UPDATE文とDATE_FORMAT関数を組み合わせるのが簡単な方法です。'%Y-%m-XX' の形式で目的の日を指定することで、既存の年・月情報を壊すことなく、日部分のみを効率的に一括更新できます。

  1. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」

  2. C#のDateTimeオブジェクトから日付部分のみを取得する方法

    C#のDateTimeオブジェクトには日付と時刻の両方の情報が含まれていますが、用途によっては日付部分だけが必要になることがあります。ここでは、DateTimeから日付のみを取り出す代表的な4つの方法を解説します。主な取得方法ToShortDateString()メソッド現在のDateTimeオブジェクトの値を、短い形式の日付文字列に変換します。戻り値は、システムのカルチャ(地域)設定に基づいた短い日付表現の文字列です。ToLongDateString()メソッド現在のDateTimeオブジェクトの値を、長い形式(年・月・日をすべて含む詳細な表記)の日付文字列に変換します。こちらもカルチャ設定