日付と時刻関数
TiDB は、MySQL 8.0 で利用可能な日付と時刻関数のすべてをサポートします。
注記:
- MySQLは、誤った形式の日付と時刻の値を受け入れることがよくあります。例えば、
 '2020-01-01\n\t01:01:01'と'2020-01_01\n\t01:01'有効な日付と時刻の値として扱われます。- TiDBはMySQLの動作に最大限合わせようとしますが、必ずしもすべてのインスタンスで一致するとは限りません。日付を正しくフォーマットすることをお勧めします。誤ったフォーマットの値に対する意図された動作は文書化されておらず、一貫性がないことがよくあります。
 
日付/時刻関数:
| 名前 | 説明 | 
|---|---|
ADDDATE() | 日付値に時間値(間隔)を追加する | 
ADDTIME() | 時間を追加 | 
CONVERT_TZ() | あるタイムゾーンから別のタイムゾーンに変換する | 
CURDATE() | 現在の日付を返す | 
CURRENT_DATE() 、 CURRENT_DATE | CURDATE() の同義語 | 
CURRENT_TIME() 、 CURRENT_TIME | CURTIME() の同義語 | 
CURRENT_TIMESTAMP() 、 CURRENT_TIMESTAMP | NOW()の同義語 | 
CURTIME() | 現在の時刻を返す | 
DATE() | 日付または日付時刻式の日付部分を抽出します | 
DATE_ADD() | 日付値に時間値(間隔)を追加する | 
DATE_FORMAT() | 指定どおりに日付をフォーマットする | 
DATE_SUB() | 日付から時間値(間隔)を減算する | 
DATEDIFF() | 2つの日付を減算する | 
DAY() | DAYOFMONTH() の同義語 | 
DAYNAME() | 曜日の名前を返す | 
DAYOFMONTH() | 月の日付を返す(0~31) | 
DAYOFWEEK() | 引数の曜日インデックスを返す | 
DAYOFYEAR() | 年内の通算日数(1~366)を返します | 
EXTRACT() | 日付の一部を抽出する | 
FROM_DAYS() | 曜日番号を日付に変換する | 
FROM_UNIXTIME() | Unixタイムスタンプを日付としてフォーマットする | 
GET_FORMAT() | 日付形式の文字列を返す | 
HOUR() | 時間を抽出 | 
LAST_DAY | 引数の月の最終日を返す | 
LOCALTIME() 、 LOCALTIME | NOW()の同義語 | 
LOCALTIMESTAMP 、 LOCALTIMESTAMP() | NOW()の同義語 | 
MAKEDATE() | 年と日から日付を作成する | 
MAKETIME() | 時、分、秒から時間を作成する | 
MICROSECOND() | 引数からマイクロ秒を返す | 
MINUTE() | 引数から分を返す | 
MONTH() | 経過日から月を返す | 
MONTHNAME() | 月の名前を返す | 
NOW() | 現在の日付と時刻を返す | 
PERIOD_ADD() | 年月にピリオドを追加する | 
PERIOD_DIFF() | 期間間の月数を返す | 
QUARTER() | 日付引数から四半期を返す | 
SEC_TO_TIME() | 秒を「HH:MM:SS」形式に変換します | 
SECOND() | 秒を返す(0~59) | 
STR_TO_DATE() | 文字列を日付に変換する | 
SUBDATE() | 3つの引数で呼び出された場合のDATE_SUB()の同義語 | 
SUBTIME() | 引き算する | 
SYSDATE() | 関数が実行された時刻を返す | 
TIME() | 渡された式の時間部分を抽出します | 
TIME_FORMAT() | 時間としてフォーマット | 
TIME_TO_SEC() | 引数を秒数に変換して返します | 
TIMEDIFF() | 時間を減算する | 
TIMESTAMP() | 引数が1つの場合、この関数は日付または日付時刻式を返します。引数が2つの場合、引数の合計を返します。 | 
TIMESTAMPADD() | 日付時刻式に間隔を追加する | 
TIMESTAMPDIFF() | 日付時刻式から間隔を減算する | 
TO_DAYS() | 日付引数を日数に変換して返します | 
TO_SECONDS() | 日付または日付時刻引数を0年からの秒数に変換して返します。 | 
UNIX_TIMESTAMP() | Unixタイムスタンプを返す | 
UTC_DATE() | 現在のUTC日付を返す | 
UTC_TIME() | 現在のUTC時刻を返す | 
UTC_TIMESTAMP() | 現在のUTCの日付と時刻を返す | 
WEEK() | 週番号を返す | 
WEEKDAY() | 曜日インデックスを返す | 
WEEKOFYEAR() | 日付のカレンダー週を返します(1~53) | 
YEAR() | 年を返す | 
YEARWEEK() | 年と週を返す | 
詳細は日付と時刻関数参照。
MySQLの互換性
関数STR_TO_DATE() TiDBでサポートされていますが、すべての日付と時刻の値を解析することはできません。また、以下の日付と時刻のフォーマットオプションは実装されていません。
| 形式 | 説明 | 
|---|---|
| 「%a」 | 曜日の略称(日~土) | 
| 「%D」 | 英語の接尾辞付きの月日(0日、1日、2日、3日) | 
| 「%U」 | 週(00..53)、日曜日が週の最初の日です。WEEK() モード 0 | 
| "%u" | 週(00..53)、月曜日が週の最初の日です。WEEK() モード 1 | 
| 「%V」 | 週(01..53)、日曜日が週の最初の日です。WEEK() モード 2。%X とともに使用されます。 | 
| 「%v」 | 週(01..53)、月曜日が週の最初の日です。WEEK() モード 3。%x とともに使用されます。 | 
| 「%W」 | 曜日名(日曜日..土曜日) | 
| "%w" | 曜日(0=日曜日、6=土曜日) | 
| 「%X」 | 日曜日を週の最初の日とする週の年を 4 桁の数字で表します。 | 
| "%x" | 週の年。月曜日を週の最初の日とする、数字 4 桁。 | 
詳細は問題 #30082ご覧ください。
関連するシステム変数
default_week_format変数はWEEK()機能に影響します。