Skip to content

Latest commit

 

History

History
101 lines (90 loc) · 10.9 KB

date-and-time-functions.md

File metadata and controls

101 lines (90 loc) · 10.9 KB
title aliases
日期和时间函数
/docs-cn/dev/functions-and-operators/date-and-time-functions/
/docs-cn/dev/reference/sql/functions-and-operators/date-and-time-functions/

日期和时间函数

TiDB 支持使用 MySQL 5.7 中提供的所有日期和时间函数

注意:

  • MySQL 常常会接受格式不正确的日期和时间值。例如,'2020-01-01\n\t01:01:01''2020-01_01\n\t01:01' 被视为有效的日期和时间值。
  • TiDB 会尽量与 MySQL 的行为保持一致,但可能无法在所有情况下完全匹配。建议使用正确的格式化日期,TiDB 文档中未记录将如何处理格式不正确的值。

日期时间函数表

函数名 功能描述
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() 函数。