十三、MySQL基础系列笔记之日期和时间函数
常见的日期和时间函数有:
函数 | 功能 |
---|---|
curdate() | 返回当前年月日。如:2020-10-16 |
curtime() | 返回当前十分秒。如:22:54:23 |
now() | 返回当前时间和日期。如:2020-10-16 22:54:23 |
unix_timestamp(date) | 返回日期date的UNIX时间戳。如:1602860219 |
from_unixtime | 返回unix时间戳的日期值。如:from_unixtime(1602860219) = 2020-10-16 22:56:59 |
week(date) | 返回日期date为一年中的第几周 |
year(date) | 返回日期date的年份 |
hour(time) | 返回time的小时值 |
minute(time) | 返回time的分钟值 |
monthname(date) | 返回date的月份名 |
quarter(date) | 返回date对应的一年中的季度值,范围1-4 |
date_format(date,fmt) | 返回按字符串fmt格式化日期date值 |
date_add(date,interval expr type) | 返回一个日期或时间值加上一个时间间隔的时间值 |
date_sum(date,interval expr type) | 函数从日期减去指定的时间间隔 |
datediff(expr,expr2) | 返回起始时间expr和结束时间expr2之间的天数 |
dayname(d) | 返回d对应的工作日的英文名称,如Sunday |
dayofweek(d) | 返回d对应的一周中的索引(位置),1=等于周日,2=周一,...7=周六 |
weekday(d) | 返回日期对应的周索引,0=周一,...,6=周日 |
weekofyear(d) | 计算给定日期位于一年中的第几周 |
dayofyear(d) | 返回d是一年中第几天,范围1~366 |
dayofmonth(d) | 返回指定d日期在一个月中的位置 |
time_to_sec(time) | 返回已经转化为秒的tme参数,转换公式:小时3600+分60+秒 |
sec_to_time(seconds) | 返回被转化为小时、分、秒的seconds值 |
to_days(date) | 返回给定date日期的天数 |
mysql> select curdate(),curtime(),now(),unix_timestamp(now()),from_unixtime(1602860664);
+------------+-----------+---------------------+-----------------------+---------------------------+
| curdate() | curtime() | now() | unix_timestamp(now()) | from_unixtime(1602860664) |
+------------+-----------+---------------------+-----------------------+---------------------------+
| 2020-10-16 | 23:08:07 | 2020-10-16 23:08:07 | 1602860887 | 2020-10-16 23:04:24 |
+------------+-----------+---------------------+-----------------------+---------------------------+
1 row in set (0.00 sec)
mysql> select hour(curtime()),minute(curtime()),monthname(now()),week(now()),year(now()),hour(curtime());
+-----------------+-------------------+------------------+-------------+-------------+-----------------+
| hour(curtime()) | minute(curtime()) | monthname(now()) | week(now()) | year(now()) | hour(curtime()) |
+-----------------+-------------------+------------------+-------------+-------------+-----------------+
| 23 | 7 | October | 41 | 2020 | 23 |
+-----------------+-------------------+------------------+-------------+-------------+-----------------+
1 row in set (0.00 sec)
date_format(date,fmt)格式化时间
date_format格式化的格式有许多,功能也非常强大,格式符如下:
格式符 | 作用 |
---|---|
%S和%s | 两位数字形式的秒,如00,01,...59 |
%i | 两位数字形式的分,如00,01,...59 |
%H | 两位数字形式的小时,24小时,如00,01,...23 |
%h和%I | 两位数字形式的小时,12小时,如01,02,...12 |
%k | 数字形式的小时,24小时,如0,1,...23 |
%l | 数字形式的小时,12小时,如1,2,...12 |
%T | 24小时的时间形式,如hh:mm:ss |
%r | 12小时的时间形式,如hh:mm:ssAM 或 hh:mm:ssPm |
%p | AM或PM |
%W | 一周中每一天的名称,如Sunday,Monday...,Saturday |
%a | 一周中每一天名称的缩写,如Sun,Mon,...,Sat |
%d | 两位数字表示月中的天数,如00,01,..,31 |
%e | 数字形式表示月中的天数,如1,2,...31 |
%D | 英文后缀表示月中的天数,如1st,2nd,3rd,... |
%w | 以数字形式表示周中的天数,如0=Sunday,1=Monday,...6=Saturday |
%j | 以3位数字表示年中的天数,如001,002,...366 |
%U | 周(0,1,52),其中Sunday为周中的第一天 |
%u | 周(0,1,52),其中Monday为周中的第一天 |
%M | 月名,如January,February...December |
%b | 缩写的月名,如Oct... |
%m | 两位数字表示的月分,如01,02,...12 |
%c | 数字表示的月份,如1,2,...12 |
%Y | 4位数字表示年份,如2020 |
%y | 两位数字表示的年份,如20 |
%% | 直接值% |
date_add(date,interval expr type)-返回与所给日期date相差interval时间段的日期
其中intervel是间隔类型关键字,expr是一个表达式,这个表达式对应后面的类型,type是间隔类型。间隔类型如下:
表达式类型 | 说明 | 格式 |
---|---|---|
hour | 小时 | hh |
minute | 分 | mm |
second | 秒 | ss |
year | 年 | YY |
month | 月 | MM |
day | 天 | DD |
year_month | 年和月 | YY-MM |
day_hour | 日和小时 | DD hh |
day_minute | 日和分钟 | DD hh:mm |
day_second | 日和秒 | DD hh:mm::ss |
hour_minute | 小时和分 | hh:mm |
hour_second | 小时和秒 | hh:ss |
minute_second | 分钟和秒 | mm:ss |
# 第一列,返回当前时间,第二列,当前时间距离31天后的日期时间,第三列:返回距离当前时间一年2个月后日期时间
mysql> select now(),date_add(now(),interval 31 day),date_add(now(),interval '1_2' year_month);
+---------------------+---------------------------------+-------------------------------------------+
| now() | date_add(now(),interval 31 day) | date_add(now(),interval '1_2' year_month) |
+---------------------+---------------------------------+-------------------------------------------+
| 2020-10-16 23:41:03 | 2020-11-16 23:41:03 | 2021-12-16 23:41:03 |
+---------------------+---------------------------------+-------------------------------------------+
1 row in set (0.00 sec)
2020-10-17
请登录后再评论