日付と時刻関数
TiDB は、 MySQL 5.7で利用可能な日付と時刻関数をすべてサポートします。
ノート:
- 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 年以降の秒数に変換された date または datetime 引数を返します | 
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" | 曜日の略称(Sun..Sat) | 
| "%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=土曜日) | 
| "%バツ" | 日曜日が週の最初の日である週の年、数値、4 桁。 | 
| "%バツ" | 週の年。月曜が週の最初の日で、4 桁の数字です。 | 
詳細については、 問題 #30082を参照してください。
関連するシステム変数
default_week_format変数はWEEK()関数に影響します。