MySQLで一重引用符付きの日付を指定フォーマットで挿入する方法(str_to_date()活用ガイド)
MySQLで日付フォーマットを使って日付を挿入する方法
MySQLでは、str_to_date() 関数を使用することで、任意の書式で記述された日付文字列を DATE 型や DATETIME 型に変換してテーブルに挿入できます。このとき、日付文字列は一重引用符(シングルクォート)で囲みます。
基本的な構文は以下のとおりです。
INSERT INTO テーブル名 VALUES(値1, 値2, ...... 値N, str_to_date('日付', '%Y-%m-%d'));第1引数に挿入したい日付文字列を、第2引数にその文字列の書式(フォーマット指定子)を渡します。これにより、文字列が正しい日付データとして解釈されます。
MySQLで使える主な日付・時刻フォーマット指定子の一覧
| フォーマット | 説明 |
|---|---|
| %a | 曜日の省略名(Sun〜Sat) |
| %b | 月名の省略形(Jan〜Dec) |
| %c | 月を数値で表す(0〜12) |
| %D | 日に接尾辞を付けた数値表現(1st、2nd、3rd など) |
| %d | 日を2桁の数値で表す(01〜31) |
| %e | 日を数値で表す(0〜31) |
| %f | マイクロ秒(000000〜999999) |
| %H | 時間(24時間制、00〜23) |
| %h | 時間(12時間制、00〜12) |
| %I | 時間(12時間制、00〜12)※ %h と同じ |
| %i | 分(00〜59) |
| %j | 年内の通算日数(001〜366) |
| %k | 時間(24時間制、先頭ゼロなし、0〜23) |
| %l | 時間(12時間制、先頭ゼロなし、1〜12) |
| %M | 月名の正式名称(January〜December) |
| %m | 月を2桁の数値で表す(00〜12) |
| %p | AM または PM |
| %r | 12時間制の時刻(hh:mm:ss AM/PM) |
| %S | 秒(00〜59) |
| %s | 秒(00〜59)※ %S と同じ |
| %T | 24時間制の時刻(hh:mm:ss) |
| %U | 週番号(日曜日を週の始まりとする、00〜53) |
| %u | 週番号(月曜日を週の始まりとする、00〜53) |
| %V | 週番号(日曜日を週の始まりとする、01〜53)。%X と組み合わせて使用 |
| %v | 週番号(月曜日を週の始まりとする、01〜53)。%x と組み合わせて使用 |
| %W | 曜日の正式名称(Sunday〜Saturday) |
| %w | 曜日を数値で表す(日曜 = 0、土曜 = 6) |
| %X | 週の年(日曜日を週の始まりとする場合) |
| %x | 週の年(月曜日を週の始まりとする場合) |
| %Y | 年を4桁の数値で表す |
| %y | 年を2桁の数値で表す |
実際に試してみよう:サンプルテーブルの作成
まず、日付データを格納するためのサンプルテーブルを作成します。
mysql> create table BookDateDemo
-> (
-> BookName varchar(200),
-> BookIssueDate datetime
-> );
Query OK, 0 rows affected (0.44 sec)ここでは、書籍名(BookName)と発行日(BookIssueDate)という2つのカラムを持つテーブルを作成しました。
str_to_date() を使ったデータの挿入
次に、上記の構文に従って、日付を一重引用符で囲んで挿入してみましょう。
mysql> insert into BookDateDemo values('Let us C', str_to_date('2018-11-28','%Y-%m-%d'));
Query OK, 1 row affected (0.11 sec)
mysql> insert into BookDateDemo values('The C++ Programming', str_to_date('2018-11-29','%Y-%m-%d'));
Query OK, 1 row affected (0.16 sec)
mysql> insert into BookDateDemo values('C in Depth', str_to_date('2018-11-20','%Y-%m-%d'));
Query OK, 1 row affected (0.23 sec)このように、日付部分を str_to_date('2018-11-28','%Y-%m-%d') のように一重引用符で囲むことで、文字列として渡した日付が DATETIME 型に正しく変換されて登録されます。
SELECT文で登録結果を確認する
登録されたすべてのレコードを確認するには、以下のように SELECT 文を実行します。
mysql> select * from BookDateDemo;
実行結果は以下のとおりです。
+---------------------+---------------------+ | BookName | BookIssueDate | +---------------------+---------------------+ | Let us C | 2018-11-28 00:00:00 | | The C++ Programming | 2018-11-29 00:00:00 | | C in Depth | 2018-11-20 00:00:00 | +---------------------+---------------------+ 3 rows in set (0.00 sec)
まとめ
- MySQLで日付文字列を挿入するときは、str_to_date() 関数を使い、日付を一重引用符で囲むのが基本です。
- 第2引数のフォーマット指定子(%Y-%m-%d など)を、実際の文字列の並びに合わせて指定することが重要です。
- フォーマットを正しく指定すれば、「28/11/2018」のような独自の書式の日付も問題なく登録できます。
-
JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説
JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert
-
JavaでMySQLテーブルに1つのカラムのみを挿入する方法
JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m