MySQLで日付付きの行を挿入する方法:DATE型カラムへのデータ登録手順
MySQLで日付付きの行を挿入するには
MySQLでは、DATE型のカラムに対して「YYYY-MM-DD」形式の日付文字列を指定することで、簡単に日付付きの行を挿入できます。ここでは、従業員情報を管理するテーブルを例に、テーブル作成からデータ挿入、確認までの一連の手順を解説します。
1. テーブルを作成する
まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。EmployeeIdは自動採番(AUTO_INCREMENT)の主キーとし、入社日を格納するJoiningDateカラムにはDATE型を指定します。
mysql> create table DemoTable(
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(100),
JoiningDate date
);
Query OK, 0 rows affected (0.48 sec)
2. INSERT文で日付付きのレコードを挿入する
次に、INSERTコマンドを使用して複数のレコードを追加します。日付はシングルクォートで囲んだ「'2019-01-21'」のような形式で指定します。
mysql> insert into DemoTable(EmployeeName,JoiningDate) values('Chris','2019-01-21');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(EmployeeName,JoiningDate) values('Robert','2016-12-01');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(EmployeeName,JoiningDate) values('Mike','2015-03-12');
Query OK, 1 row affected (0.12 sec)
なお、1回のINSERT文でまとめて挿入することも可能です。
mysql> insert into DemoTable(EmployeeName,JoiningDate) values
('Chris','2019-01-21'),
('Robert','2016-12-01'),
('Mike','2015-03-12');
3. SELECT文でレコードを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable;
上記のクエリを実行すると、次のような結果が出力されます。
+------------+--------------+-------------+ | EmployeeId | EmployeeName | JoiningDate | +------------+--------------+-------------+ | 1 | Chris | 2019-01-21 | | 2 | Robert | 2016-12-01 | | 3 | Mike | 2015-03-12 | +------------+--------------+-------------+ 3 rows in set (0.00 sec)
ポイントまとめ
- DATE型カラムへの挿入は「YYYY-MM-DD」形式の文字列で指定するのが基本です。
- 不正な形式の日付(例:'2019-13-45')を挿入しようとするとエラーになるか、SQLモードによっては警告とともに無効な値が登録される場合があります。
- 現在の日付を挿入したい場合は、値の代わりに
CURDATE()関数やNOW()関数を使用できます。
このように、MySQLではINSERT文に日付文字列を渡すだけで、DATE型カラムを持つ行を簡単に挿入できます。
-
MySQLクエリで日付・時刻の値を秒単位で加算(インクリメント)する方法
MySQLで日付・時刻(DATETIME)の値に指定した秒数を加算したい場合は、DATE_ADD()関数とINTERVAL句を組み合わせて使用します。この記事では、実際にテーブルを作成し、秒単位で時刻をインクリメントする手順を具体例とともに解説します。 サンプルテーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1867 ( ArrivalTime datetime &
-
MySQLで「X日前」の日時を持つ行を挿入する方法
MySQLでは、CURRENT_TIMESTAMPとINTERVALを組み合わせることで、「現在日時からX日前」のようなタイムスタンプを持つ行を簡単に挿入できます。以下の構文を使用します。insert into yourTableName values(CURRENT_TIMESTAMP - INTERVAL ABS(RAND() * 100) DAY);この構文では、RAND()関数で生成した0〜100までのランダムな値をABS()で絶対値に変換し、その日数分だけ現在日時から遡った日時を挿入しています。つまり、実行するたびに「最大100日前」のランダムな日付が登録される仕組みです。動作確認用