在前面若干章节中,我们介绍了SQL的基础与高阶语法,接下来,我们将分四个章节,介绍MySQL中常见的函数应用,大致分为如下几个章节:
- MySQL 字符串函数
- MySQL 数字函数
- MySQL 日期函数
- MySQL 高级函数
本文将主要介绍MySQL 日期函数。
CURRENT_DATE()
返回当前日期,示例如下:
CURRENT_TIME()
返回当前时间,示例如下:
CURRENT_TIMESTAMP()
返回当前日期和时间,示例如下:
DATEDIFF(date1,date2)
计算日期 date1与 date2 之间相隔的天数。
如上,我们计算'2019-01-01' 相差 '2019-09-17' 天数,相差为 259 天。
DATE_ADD(date,INTERVAL expr type)
计算起始日期 date 加上一个时间间隔后的日期。
如上,我们在起始日期 '2019-9-17 20:58:10' 加上3天,返回 2019-09-20 20:58:10。
如上,我们在起始日期 '2019-9-17 20:58:10' 加上3分钟 ,返回 2019-09-17 21:01:10。
DATE_SUB(date, INTERVAL expr type)
计算起始日期 date 减去一个时间间隔后的日期。
如上,我们在起始日期 '2019-9-17 20:58:10' 减去2天,返回 2019-09-15 20:58:10。
DATE_FORMAT(date, format)
按表达式 format 的格式显示日期 date ,示例如下:
如上,我们希望 2019-9-17 20:58:10 按照 '%Y-%m-%d' 格式显示,如显示 2019-09-17。
DAYNAME(date)
返回日期 date 是星期几。
如上,返回 2019-9-17 20:58:10 的星期为 Tuesday 。
DAYOFWEEK(date)
返回日期 date 的星期索引(1=星期天,2=星期一, …7=星期六)。
如上,返回 2019-9-17 20:58:10 所对应的星期的索引为3,即星期二。
DAYOFMONTH(date)
计算日期 date 是本月的第几天。
如上,返回 2019-9-17 20:58:10 为本月的第 17天。
DAYOFYEAR(date)
计算日期 date 是本年的第几天。
如上,返回 2019-9-17 20:58:10 为本年的第 260 天。
WEEKOFYEAR(date)
计算日期 date 是本年的第几个星期,范围是 1到53。
如上,返回 2019-09-17 09:17:44 为第 38 个星期。
EXTRACT(type FROM date)
从日期 date 中获取指定的年、月、日、时、分、秒值,type 指定返回的值,type可取值为:
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
如下,从日期 2019-9-17 20:58:10 中获取分钟为 58。
LAST_DAY(date)
返回给定日期date 中月份的最后一天。
如上,返回 2019-9-17 日期中9月的最后一天为 2019-09-30 。
MAKEDATE(year, day)
返回年份 year 中指定天数所对应的日期。
如上,返回2019年的第 270 天所对应的的日期为 2019-09-27。
QUARTER(date)
返回日期date 是第几季度,返回 1 到 4。
如上,返回 2019-09-17 09:12:50 为第 3 季度。
SEC_TO_TIME(seconds)
将以秒为单位的时间 seconds 转换为时分秒的格式。
如上,我们将 80000秒转换为时分秒为 22:13:20 。
TIME_TO_SEC(time)
将时间 time 转换为秒。
如上,我们将09:17:44 转换为 33464秒。
TIMEDIFF(time1, time2)
计算 time1 与 time2 时间差值。
如上,返回'2019-09-17 09:17:44' 与 '2019-09-16 09:17:44' 的时间差为 24:00:00 。
PERIOD_DIFF(period1, period2)
返回两个时段之间的月份差值,period1, period2格式为YYMM或YYYYMM。
如上,返回201909, 201904的月份差为5个月。