Navicatブログ

MySQLでの日付と時刻の操作 - パート1 2022年2月25日 Robert Gravelle

DATE、TIME、DATETIMEタイプ

大多数のデータベースには、大量の“時間”データが格納されています。時間データは、単に時間の状態を表すデータです。組織は、気象パターンやその他の環境変数の分析、交通状況の監視、人口トレンドの調査など、様々な理由で時間データを収集する場合があります。また、企業は、注文が行われた時期、在庫の補充、スタッフの雇用、および日常業務に関するその他の様々な情報に関する時間データを定期的に保存する必要があります。

あなたは、リレーショナルデータベースが同じ方法で日付と時刻を保存しないことを知って驚くかもしれません。MySQLは特に規範的です。例えば、ユニバーサルyyyy-mm-dd形式を使用して日付値を格納します。この形式は固定されており、変更できません。あなたはmm-dd-yyyy形式を使用することを好むかもしれませんが、それは不可能です。ただし、DATE_FORMAT関数を使用して、プレゼンテーション層(通常はアプリケーション)で希望する方法で日付をフォーマットできます。MySQLでの日付と時刻の操作に関する最初の2回の記事では、DATE、TIME、およびDATETIMEから始まるMySQLの時間データタイプについて説明します。

タイプの概要

MySQLには、日付と時刻を格納するための5つのタイプがあり、日付専用、時刻用、および両方を含むものがあります。各タイプをまとめた表を次に示します。

タイプ名 説明
 DATE YYYY-MM-DD形式の日付値
 TIME hh:mm:ss形式の時間値
 DATETIME YYYY-MM-DD hh:mm:ss形式の日付と時刻の値
 TIMESTAMP YYYY-MM-DD hh:mm:ss形式のタイムスタンプ値
 YEAR YYYYまたはYY形式の年の値

この記事の残りの部分では、最初の3つのタイプについて詳しく説明し、次の記事では他の2つのタイプに焦点を当てます。

DATEタイプ

MySQLは3バイトを使用してDATE値を格納します。DATE値の範囲は1000-01-01から9999-12-31です。さらに、strictモードが無効になっている場合、MySQLは2015-02-30などの無効な日付をゼロ日付値0000-00-00に変換します。Navicat 16では、テーブルデザイナーのタイプドロップダウンからDATEタイプを選択できます。

date_column_in_table_designer (159K)

DATE値を設定するためには、カレンダーコントロールを使用して値を選択するだけです。

calendar (88K)

もちろん、INSERTステートメントを使用してDATEを挿入することもできます。

insert_date (25K)

TIMEタイプ

MySQLは、「HH:MM:SS」形式を使用して、24時間以内の時刻を表す時刻値をクエリしたり表示します。MySQLは、24時間を超える2つのイベント間の時間間隔を表すためには、「HHH:MM:SS」形式を使用します。

Navicat 16のタイプドロップダウンのTIMEタイプは次のとおりです。

time_column_in_table_designer (79K)

TIME値を設定するために、NavicatはTIME INPUTコントロールを提供します。

time_input_control (11K)

開始時刻と終了時刻を設定するINSERTステートメントは次のとおりです。

insert_time (24K)

DATETIMEタイプ

多くの場合、日付と時刻の両方を保存する必要があります。これを行うためには、MySQL DATETIMEタイプを使用できます。デフォルトでは、DATETIME値の範囲は1000-01-01 00:00:00から9999-12-31 23:59:59です。DATETIME列からデータをクエリすると、MySQLは同じYYYY-MM-DD HH:MM:SS形式でDATETIME値を表示します。

DATETIME値は、ストレージに5バイトを使用します。さらに、DATETIME値には、YYYY-MM-DD HH:MM:SS[.fraction]の形式で、末尾の小数秒からマイクロ秒までを含めることができます(例:2015-12-20 10:01:00.999999)。

Navicatは、DATETIME値を入力するために、DATEコントロールとTIMEコントロールを組み合わせたDATETIME INPUTコントロールを提供します。

datetime_input_control (63K)

DATETIME値は、「T」時間部分区切り文字を含む文字列リテラルを使用するか、DATETIMEにキャストすることによって設定できます。

insert_datetime (31K)

今後

DATE、TIME、およびDATETIMEタイプについて説明しました。次の記事では、残りの2つの時間タイプであるTIMESTAMPとYEARについて説明します。

ブログのアーカイブ
シェア