日付値と時間値は,値の正確型とほかの要因に応じて,引用符付きの文字列や数値など,複数の形式で表現できます。たとえば,MySQLが日付を予想するコンテキストでは,“2015-07-21”
、“20150721”
、20150721
のいずれも日付と解釈します。
このセクションでは日付リテラルと時間リテラルの許容される形式にいて説明します。許可されている値の範囲など,時間デ,タ型の詳細は,次のセクションを参照してください。
標準SQLとodbcの日付および時間リテラル標準SQLでは,型キ,時間リテラルを指定できます。キワドと文字列の間の空白はオプションです。
日期的str“时间”str“时间戳”str'
MySQLは,これらの構造と,対応するODBC構文も認識します。
{d 'str'} {t 'str'} {ts 'str'}
MySQL 5.6.4より前では,MySQLは型キワドを無視し,前述の各構造は,型がVARCHAR
の文字列値'
を生成します。str
'
5.6.4以降,MySQLは型キーワードを使用し,これらの構造はそれぞれ,後続の小数秒部分が指定されている場合はこの部分を含む日期
、时间
,およびDATETIME
の値を生成します。DATETIME
には,標準SQLの时间戳
型により密接に対応する範囲があり,ここには0001
から9999
の年範囲が含まれるので,时间戳
構文は,MySQLでDATETIME
値を生成します。(MySQLの时间戳
年範囲は1970
から2038
です。)
日時コンテキストでの文字列リテラルと数値リテラルMySQLは次の形式で日期
値を認識します。
“YYYY-MM-DD”
または“YY-MM-DD”
形式の文字列として。「緩やかな」構文が許可されます。どの句読点文字でも,日付部分間の区切り文字として使用できます。たとえば,“2012-12-31”
、“2012/12/31”
、2012 ^ ^ 12 31
,および2012 @12@31
は同等です。“名称”
または“YYMMDD”
形式の,区切り文字がない文字列(日付として適切なもの)として。たとえば,“20070523”
と“070523”
は“2007-05-23”
として解釈されますが,“071332”
は正しくないため(月と日の部分が不適切),“0000-00-00”
になります。名称
またはYYMMDD
形式の数値(日付として適切なもの)として。たとえば,19830905
と830905
は“1983-09-05”
として解釈されます。
MySQLは次の形式でDATETIME
および时间戳
値を認識します。
“YYYY-MM-DD HH: MM: SS”
または“YY-MM-DD HH: MM: SS”
形式の文字列として。「緩やかな」構文はここでも許可されます。どの句読点文字でも,日付部分または時間部分の間の区切り文字として使用できます。たとえば,“2012-12-31 11:30:45”
、2012年^ ^ 12日31日11 + 30 + 45 '
、2012/12/31 11 * 30 * 45的
,および“45 30 2012 @12@31 11 ^ ^”
は同等です。日付および時間の部分と小数秒部分との間の区切り文字として認識される唯一の文字が小数点です。
日付部分と時間部分は,空白ではなく
T
で区切ることもできます。たとえば,“2012-12-31 11:30:45”
と2012 - 12 - 31 t11:30:45
は同等です。“YYYYMMDDHHMMSS”
または“YYMMDDHHMMSS”
形式の,区切り文字がない文字列(日付として適切なもの)として。たとえば,“20070523091528”
と“070523091528”
は“2007-05-23 09:15:28”
として解釈されますが,“071122129015”
は正しくないため(分の部分が不適切),“0000-00-00”就是
になります。YYYYMMDDHHMMSS
またはYYMMDDHHMMSS
形式の数値(日付として適切なもの)として。たとえば,19830905132800
と830905132800
は“1983-09-05 13:28:00”
として解釈されます。
DATETIME
または时间戳
値には,マe .クロ秒(6桁)までの精度の後続の小数秒部分を含めることができます。小数部は,常に時間の残りの部分から小数点で区分する必要があります。これ以外の小数秒区切り文字は認識されません。MySQLの小数秒のサポトの詳細はセクション11.3.6 "時間値での小数秒"を参照してください。
2桁の年を含む日付の値は,世紀が不明なためあいまいです。MySQLは次のルルを使用して2桁の年の値を解釈します。
70 - 99
の範囲の値は1970 - 1999
に変換されます。00 - 69
の範囲の値は2000 - 2069
に変換されます。
セクション11.3.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桁の長さにすると,名称
またはYYYYMMDDHHMMSS
形式であり,最初の4桁が年であると想定されます。数値を6桁または12桁の長さにすると,YYMMDD
またはYYMMDDHHMMSS
形式であり,最初の2桁が年であると想定されます。これらの長さではない数字は,いばん近い長さまで先行ゼロで埋められているかのように解釈されます。
区切り文字がない文字列として指定された値は,その長さに従って解釈されます。8または14文字の長さの文字列の場合,年は最初の4文字で表されていると見なされます。そうでなければ,年は最初の2文字で表されていると見なされます。文字列は,その文字列に存在するだけの部分について,左から右に順番に,年,月,日,時,分,秒として解釈されます。これは,6文字より少ない文字列は利用してはいけないということを意味します。たとえば,1999年3月を表すと考えて“9903”
を指定しても,MySQLは「ゼロ」日付値に変換します。これは,年および月の値は99
と03
であるけれども,日の部分が完全に欠落しているために起こります。ただし,明示的に値ゼロを指定することによって,欠落している月や日の部分を表すことができます。たとえば,“1999-03-00”
の値を挿入するには,“990300”
を使用します。
MySQLは次の形式で时间
値を認識します。
“D HH: MM: SS”
形式の文字列として。“HH: MM: SS”
、“HH: MM”
、“D HH: MM”
、“D HH”
、“党卫军”
のいずれかの「緩やかな」構文も使用できます。この場合,D
は日を表し,0から34の値を指定できます。“HHMMSS”
形式の区切り文字がない文字列(時間として適切なもの)として。たとえば,“101112”
は“10:11:12”
として認識されますが,“109712”
は正しくないため(分の部分が不適切),“就是”
になります。HHMMSS
形式の数値(時間として適切なもの)として。たとえば,101112
は“10:11:12”
として認識されます。党卫军
、mms
、HHMMSS
の代替形式も認識されます。
後続の小数秒部分は,“D HH: MM: SS.fraction”
、“HH: MM: SS.fraction”
、“HHMMSS.fraction”
,およびHHMMSS.fraction
の時間形式で認識されます。ここで,分数
はマクロ秒(6桁)までの精度で表される小数部分です。小数部は,常に時間の残りの部分から小数点で区分する必要があります。これ以外の小数秒区切り文字は認識されません。MySQLの小数秒のサポトの詳細はセクション11.3.6 "時間値での小数秒"を参照してください。
時間部分の区切り文字を含む文字列として指定される时间
値の場合,10
未満の時,分,秒の値に2桁を指定する必要はありません。“8:3:2”
は“08:03:02”
と同じです。