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

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)
%pAM または PM
%r12時間制の時刻(hh:mm:ss AM/PM)
%S秒(00〜59)
%s秒(00〜59)※ %S と同じ
%T24時間制の時刻(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」のような独自の書式の日付も問題なく登録できます。

  1. JavaでMySQLデータベースにデータを挿入する方法をわかりやすく解説

    JavaからMySQLデータベースにデータを挿入するには、SQLのINSERTコマンドを使用します。基本的な構文は以下の通りです。 INSERT INTO テーブル名(カラム名1, カラム名2, ......カラム名N) VALUES(値1, 値2, ......値N); ここからは、Javaプログラムを使って実際にMySQLデータベースへレコードを挿入する手順を、順を追って見ていきましょう。 ステップ1:MySQLでテーブルを作成する まず、データの挿入先となるテーブルをMySQL側に作成します。以下のクエリを実行してください。 mysql> create table Insert

  2. JavaでMySQLテーブルに1つのカラムのみを挿入する方法

    JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m