日期和时间函数
TiDB 支持使用 MySQL 5.7 中提供的所有日期和时间函数。
日期时间函数表
| 函数名 | 功能描述 | 
|---|---|
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() | 返回两个日期间隔的天数 | 
DAY() | 与 DAYOFMONTH() 同义 | 
DAYNAME() | 返回星期名称 | 
DAYOFMONTH() | 返回参数对应的天数部分(1-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() | 返回参数对应的季度(1-4) | 
SEC_TO_TIME() | 将秒数转化为 'HH:MM:SS' 的格式 | 
SECOND() | 返回秒数(0-59) | 
STR_TO_DATE() | 将字符串转化为日期 | 
SUBDATE() | 当传入三个参数时作为 DATE_SUB() 的同义 | 
SUBTIME() | 从一个时间中减去一段时间 | 
SYSDATE() | 返回该方法执行时的时间 | 
TIME() | 返回参数的时间表达式部分 | 
TIME_FORMAT() | 格式化时间 | 
TIME_TO_SEC() | 返回参数对应的秒数 | 
TIMEDIFF() | 返回时间间隔 | 
TIMESTAMP() | 传入一个参数时候,该方法返回日期或日期/时间表达式, 传入两个参数时候, 返回参数的和 | 
TIMESTAMPADD() | 在日期/时间表达式上增加一段时间间隔 | 
TIMESTAMPDIFF() | 从日期/时间表达式中减去一段时间间隔 | 
TO_DAYS() | 将参数转化对应的天数(从第 0 年开始) | 
TO_SECONDS() | 将日期或日期/时间参数转化为秒数(从第 0 年开始) | 
UNIX_TIMESTAMP() | 返回一个 Unix 时间戳 | 
UTC_DATE() | 返回当前的 UTC 日期 | 
UTC_TIME() | 返回当前的 UTC 时间 | 
UTC_TIMESTAMP() | 返回当前的 UTC 日期和时间 | 
WEEK() | 返回参数所在的一年中的星期数 | 
WEEKDAY() | 返回星期下标 | 
WEEKOFYEAR() | 返回参数在日历中对应的一年中的星期数 | 
YEAR() | 返回参数对应的年数 | 
YEARWEEK() | 返回年数和星期数 | 
MySQL 兼容性
TiDB 支持 str_to_date() 函数,但是无法解析所有的日期和时间值。此外,TiDB 不支持以下日期和时间格式化选项:
| 格式 | 说明 | 
|---|---|
| "%a" | 星期名的缩写(例如 Sun..Sat) | 
| "%D" | 带英文后缀的月份日期(例如 0th,1st,2nd,3rd) | 
| "%U" | 星期 (00..53),星期日是每周的第一天;WEEK() mode 0 | 
| "%u" | 星期 (00..53),星期一是每周的第一天;WEEK() mode 1 | 
| "%V" | 星期 (01..53),星期日是每周的第一天;WEEK() mode 2;和 "%X" 一起使用 | 
| "%v" | 星期 (01..53),星期一是每周的第一天;WEEK() mode 3;和 "%x" 一起使用 | 
| "%W" | 星期名(例如 Sunday..Saturday) | 
| "%w" | 一周中的天名 (0=Sunday..6=Saturday) | 
| "%X" | 星期天是每周第一天的年份,数字类型,四位数字 | 
| "%x" | 星期一是每周第一天的年份,数字类型,四位数字 | 
更多信息,参见 GitHub Issue #30082。
相关系统变量
default_week_format 变量影响 WEEK() 函数。