MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

9.1.3 日付リテラルと時間リテラル

日付値と時間値は、値の正確型とほかの要因に応じて、引用符付きの文字列や数値など、複数の形式で表現できます。 たとえば、MySQL が日付を予想するコンテキストでは、'2015-07-21''20150721'20150721 のいずれも日付と解釈します。

このセクションでは日付リテラルと時間リテラルの許容される形式について説明します。 許可される値の範囲など、時間データ型の詳細は、セクション11.2「日時データ型」 を参照してください。

標準 SQL と ODBC の日付および時間リテラル.  標準 SQL では、型キーワードと文字列を使用して時間リテラルを指定する必要があります。 キーワードと文字列の間の空白はオプションです。

DATE 'str'
TIME 'str'
TIMESTAMP 'str'

MySQL は認識しますが、標準 SQL とは異なり、type キーワードは必要ありません。 標準に準拠するアプリケーションには、時間リテラルの type キーワードを含める必要があります。

MySQL では、標準 SQL 構文に対応する ODBC 構文も認識されます:

{ d 'str' }
{ t 'str' }
{ ts 'str' }

MySQL では、型キーワードと ODBC コンストラクトを使用して、DATETIME および DATETIME の値がそれぞれ生成されます。後続の小数秒部分 (指定されている場合) も含まれます。 DATETIME には、標準 SQL の TIMESTAMP 型により密接に対応する範囲があり、ここには 0001 から 9999 の年範囲が含まれるので、TIMESTAMP 構文は、MySQL で DATETIME 値を生成します。 (MySQL の TIMESTAMP 年範囲は 1970 から 2038 です。)

日時コンテキストでの文字列リテラルと数値リテラル.  MySQL は次の形式で DATE 値を認識します。

MySQL は次の形式で DATETIME および TIMESTAMP 値を認識します。

DATETIME または TIMESTAMP 値には、マイクロ秒 (6 桁) までの精度の後続の小数秒部分を含めることができます。 小数部は、常に時間の残りの部分から小数点で区分する必要があります。これ以外の小数秒区切り文字は認識されません。 MySQL の小数秒のサポートの詳細は、セクション11.2.6「時間値での小数秒」を参照してください。

2 桁の年を含む日付の値は、世紀が不明なためあいまいです。 MySQL は次のルールを使用して 2 桁の年の値を解釈します。

セクション11.2.8「日付の 2 桁の年」も参照してください。

日付部分の区切り文字を含む文字列として指定される値の場合、10 未満の月または日の値に 2 桁を指定する必要はありません。'2015-6-9''2015-06-09' と同じです。 同様に、時間部分の区切り文字を含む文字列として指定される値の場合、10 未満の時、分、または秒の値に 2 桁を指定する必要はありません。'2015-10-30 1:2:3''2015-10-30 01:02:03' と同じです。

数値として指定する値は、6、8、12、14 のいずれかの桁数にするようにしてください。 数値の長さが 8 桁または 14 桁の場合、YYYYMMDD または YYYYMMDDhhmmss 形式であるとみなされ、年は最初の 4 桁で指定されます。 数値の長さが 6 桁または 12 桁の場合、YYMMDD または YYMMDDhhmmss 形式であるとみなされ、年は最初の 2 桁で指定されます。 これらの長さではない数字は、いちばん近い長さまで先行ゼロで埋められているかのように解釈されます。

区切り文字がない文字列として指定された値は、その長さに従って解釈されます。 8 または 14 文字の長さの文字列の場合、年は最初の 4 文字で表されていると見なされます。 そうでなければ、年は最初の 2 文字で表されていると見なされます。 文字列は、その文字列に存在するだけの部分について、左から右に順番に、年、月、日、時、分、秒として解釈されます。 これは、6 文字より少ない文字列は利用してはいけないということを意味します。 たとえば、1999 年 3 月を表すと考えて '9903' を指定しても、MySQL はゼロ日付値に変換します。 これは、年および月の値は 9903 であるけれども、日の部分が完全に欠落しているために起こります。 ただし、明示的に値ゼロを指定することによって、欠落している月や日の部分を表すことができます。 たとえば、'1999-03-00' の値を挿入するには、'990300' を使用します。

MySQL は次の形式で TIME 値を認識します。

後続の小数秒部分は、'D hh:mm:ss.fraction', 'hh:mm:ss.fraction', 'hhmmss.fraction'および hhmmss.fraction の時間書式で認識されます。ここで、fraction はマイクロ秒 (6 桁) までの精度の小数部です。 小数部は、常に時間の残りの部分から小数点で区分する必要があります。これ以外の小数秒区切り文字は認識されません。 MySQL の小数秒のサポートの詳細は、セクション11.2.6「時間値での小数秒」を参照してください。

時間部分の区切り文字を含む文字列として指定される TIME 値の場合、10 未満の時、分、秒の値に 2 桁を指定する必要はありません。'8:3:2''08:03:02' と同じです。