博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 笔记 —— 日期和时间函数
阅读量:6223 次
发布时间:2019-06-21

本文共 7997 字,大约阅读时间需要 26 分钟。

目录

获取当前日期的函数和获取当前时间的函数

CURDATE()CURRENT_DATE()函数获取当前日期;CURTIME()CURRENT_TIME()函数获取当前时间。
mysql> SELECT CURDATE(), CURRENT_DATE(), CURTIME(), CURRENT_TIME();+------------+----------------+-----------+----------------+| CURDATE()  | CURRENT_DATE() | CURTIME() | CURRENT_TIME() |+------------+----------------+-----------+----------------+| 2016-07-19 | 2016-07-19     | 13:46:18  | 13:46:18       |+------------+----------------+-----------+----------------+

获取当前日期和时间的函数

NOW()函数获取当前日期和时间。
mysql> SELECT NOW();+---------------------+| NOW()               |+---------------------+| 2016-07-19 13:54:08 |+---------------------+

获取月份的函数

MONTH(d)函数返回日期d中的月份值 ,其取值范围是1~12
mysql> SELECT NOW(), MONTH(NOW());+---------------------+--------------+| NOW()               | MONTH(NOW()) |+---------------------+--------------+| 2016-07-21 13:48:47 |            7 |+---------------------+--------------+
MONTHNAME(d)函数返回日期d中月份的英文名称,如January,February等
mysql> SELECT NOW(), MONTHNAME(NOW());+---------------------+------------------+| NOW()               | MONTHNAME(NOW()) |+---------------------+------------------+| 2016-07-21 13:50:31 | July             |+---------------------+------------------+

获取星期的函数

DAYNAME(d)函数返回日期d是星期几,显示其英文名,如Monday,Tuesday等
mysql> SELECT NOW(), DAYNAME(NOW());+---------------------+----------------+| NOW()               | DAYNAME(NOW()) |+---------------------+----------------+| 2016-07-21 13:52:52 | Thursday       |+---------------------+----------------+
DAYOFWEEK(d)函数返回日期d是星期几,1表示星期天,2表示星期一,依次类推
mysql> SELECT NOW(), DAYOFWEEK(NOW());+---------------------+------------------+| NOW()               | DAYOFWEEK(NOW()) |+---------------------+------------------+| 2016-07-21 13:57:05 |                5 |+---------------------+------------------+
WEEKDAY(d)函数返回日期d是星期几,0表示星期一,1表示星期2,依次类推
mysql> SELECT NOW(), WEEKDAY(NOW());+---------------------+----------------+| NOW()               | WEEKDAY(NOW()) |+---------------------+----------------+| 2016-07-21 13:59:01 |              3 |+---------------------+----------------+

获取星期数的函数

WEEK(d)函数和WEEKOFYEAR(d)函数都是计算日期d是本年的第几个星期,返回值范围是1~53
mysql> SELECT NOW(), WEEK(NOW()), WEEKOFYEAR(NOW());+---------------------+-------------+-------------------+| NOW()               | WEEK(NOW()) | WEEKOFYEAR(NOW()) |+---------------------+-------------+-------------------+| 2016-07-21 14:03:17 |          29 |                29 |+---------------------+-------------+-------------------+

获取天数的函数

DAYOFYEAR(d)函数返回日期d是本年的第几天
mysql> SELECT NOW(), DAYOFYEAR(NOW());+---------------------+------------------+| NOW()               | DAYOFYEAR(NOW()) |+---------------------+------------------+| 2016-07-21 14:05:10 |              203 |+---------------------+------------------+
DAYOFMONTH(d)函数返回日期d是本月的第几天
mysql> SELECT NOW(), DAYOFMONTH(NOW());+---------------------+-------------------+| NOW()               | DAYOFMONTH(NOW()) |+---------------------+-------------------+| 2016-07-21 14:06:06 |                21 |+---------------------+-------------------+

获取年份、季度、小时、分钟和秒数的函数

YEAR(d)函数返回日期d中的年份值;QUARTER(d)函数返回日期d是本年的第几个季度,值的范围是1~4;HOUR(t)函数返回时间t中的小时值;MINUTE(t)函数返回时间t中的分钟值;SECOND(t)函数返回时间t中的秒数。

mysql> SELECT NOW(), YEAR(NOW()), QUARTER(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());+---------------------+-------------+----------------+-------------+---------------+---------------+| NOW()               | YEAR(NOW()) | QUARTER(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |+---------------------+-------------+----------------+-------------+---------------+---------------+| 2016-07-21 14:10:49 |        2016 |              3 |          14 |            10 |            49 |+---------------------+-------------+----------------+-------------+---------------+---------------+

计算日期和时间函数

TO_DAYS(d)函数计算日期d与0000年1月1日的天数
mysql> SELECT NOW(), TO_DAYS(NOW());+---------------------+----------------+| NOW()               | TO_DAYS(NOW()) |+---------------------+----------------+| 2016-07-19 14:03:59 |         736529 |+---------------------+----------------+
FROM_DAYS(n)函数计算从0000年1月1日开始n天后的日期
mysql> SELECT FROM_DAYS(736529);+-------------------+| FROM_DAYS(736529) |+-------------------+| 2016-07-19        |+-------------------+
DATEDIFF(d1, d2)函数计算日期d1与d2之间相隔的天数
mysql> SELECT CURDATE(), DATEDIFF(CURDATE(), '2016-07-23');+------------+-----------------------------------+| CURDATE()  | DATEDIFF(CURDATE(), '2016-07-23') |+------------+-----------------------------------+| 2016-07-21 |                                -2 |+------------+-----------------------------------+
ADDDATE(d, n)函数返回起始日期d加上n天后的日期
mysql> SELECT CURDATE(), ADDDATE(CURDATE(), 2);+------------+-----------------------+| CURDATE()  | ADDDATE(CURDATE(), 2) |+------------+-----------------------+| 2016-07-21 | 2016-07-23            |+------------+-----------------------+
SUBDATE(d, n)函数返回起始日期d减去n天后的日期
mysql> SELECT CURDATE(), SUBDATE(CURDATE(), 2);+------------+-----------------------+| CURDATE()  | SUBDATE(CURDATE(), 2) |+------------+-----------------------+| 2016-07-21 | 2016-07-19            |+------------+-----------------------+
ADDTIME(t, n)函数返回起始时间t加上n秒后的时间
mysql> SELECT CURTIME(), ADDTIME(CURTIME(), 50);+-----------+------------------------+| CURTIME() | ADDTIME(CURTIME(), 50) |+-----------+------------------------+| 09:02:18  | 09:03:08               |+-----------+------------------------+

注:实际操作中,当t >= 60时,ADDTIME(t, n)函数返回NULL

SUBTIME(t, n)函数返回起始时间t减去n秒后的时间
mysql> SELECT CURTIME(), SUBTIME(CURTIME(), 10);+-----------+------------------------+| CURTIME() | SUBTIME(CURTIME(), 10) |+-----------+------------------------+| 09:06:25  | 09:06:15               |+-----------+------------------------+

注:实际操作中,当t >= 60时,SUBTIME(t, n)函数返回NULL

ADDDATE(d, INTERVAL expr type)DATE_ADD(d, INTERVAL expr type)返回起始日期d加上一个时间段后的日期
  • expr:时间段长度的表达式。
  • type:日期间隔类型。

日期间隔类型:

类型 含义 expr 表达式的形式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH 年和月 YY 和 MM 之间用任意符号隔开
DAY_HOUR 日和小时 DD 和 hh 之间用任意符号隔开
DAY_MINUTE 日和分钟 DD 和 mm 之间用任意符号隔开
DAY_SECOND 日和秒 DD 和 ss 之间用任意符号隔开
HOUR_MINUTE 时和分 hh 和 mm 之间用任意符号隔开
HOUR_SECOND 时和秒 hh 和 ss 之间用任意符号隔开
MINUTE_SECOND 分和秒 mm 和 ss 之间用任意符号隔开
mysql> SELECT NOW(), ADDDATE(NOW(), INTERVAL 1 MONTH);+---------------------+----------------------------------+| NOW()               | ADDDATE(NOW(), INTERVAL 1 MONTH) |+---------------------+----------------------------------+| 2016-07-21 11:46:33 | 2016-08-21 11:46:33              |+---------------------+----------------------------------+
SUBDATE(d, INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期
mysql> SELECT NOW(), SUBDATE(NOW(), INTERVAL 1 MONTH);+---------------------+----------------------------------+| NOW()               | SUBDATE(NOW(), INTERVAL 1 MONTH) |+---------------------+----------------------------------+| 2016-07-21 11:49:42 | 2016-06-21 11:49:42              |+---------------------+----------------------------------+

将日期和时间格式化的函数

DATE_FORMAT(d, f)函数按照表达式f的要求显示日期d

日期时间格式:

符号 含义 取值示例
%Y 以4位数字表示年份 2008,2009等
%y 以2位数字表示年份 98,99等
%m 以2位数字表示月份 01,02等
%c 以数字表示月份 1,2等
%M 月份的英文名 January,February等
%b 月份的英文缩写 Jan,Feb等
%U 表示星期数,其中 Sunday 是星期的第一天 00~52
%u 表示星期数,其中 Monday 是星期的第一天 00~52
%j 以3位数字表示年中的天数 001~366
%d 以2位数字表示月中的几号 01~31
%e 以数字表示月中的几号 1~31
%D 以英文后缀表示月中的几号 1st,2nd等
%w 以数字的形式表示星期几 0表示Sunday,1表示Monday
%W 星期几的英文名 Monday,... , Sunday
%a 星期几的英文缩写 Mon, ... , Sun
%T 24小时制的时间形式 00:00:00~23:59:59
%r 12小时制的时间形式 12:00:00AM~11:59:59PM
%p 上午或下午 AM或PM
%k 以数字表示24小时 0,1,...,23
%l 以数字表示12小时 0,1,...,12
%H 以2位数表示24小时 00,01,...,23
%h,%I 以2位数表示12小时 00,01,...,12
%i 以2位数表示分 00~59
%S,%s 以2位数表示秒 00~59
%% 标识符%
mysql> SELECT NOW(), DATE_FORMAT(NOW(), '%Y-%M-%d %H:%i:%s');+---------------------+-----------------------------------------+| NOW()               | DATE_FORMAT(NOW(), '%Y-%M-%d %H:%i:%s') |+---------------------+-----------------------------------------+| 2016-07-21 13:33:12 | 2016-July-21 13:33:12                   |+---------------------+-----------------------------------------+

转载于:https://www.cnblogs.com/longying2008/p/5691632.html

你可能感兴趣的文章
专访声网CEO赵斌:实时互联网正深入影响垂直领域
查看>>
中国人工智能学会通讯——新一轮人工智能发展的三大特征及其展望 1.1 新一轮人工智能发展的三个特征...
查看>>
超大规模数据中心运营商Switch公司申请IPO
查看>>
英特尔首度公开展示SSD超频技术
查看>>
叱咤大数据的Regex真的是正则表达式?
查看>>
什么将成为云计算的基础设施
查看>>
网络协议
查看>>
加速行业标准研制 区块链才能成为信任机器
查看>>
《并行计算的编程模型》一2.4.3 阻塞与非阻塞
查看>>
云计算发展的7大关键点
查看>>
零售业的数字机遇:把每个消费者都当成VIP
查看>>
360最新产品亮相全球顶级安全产业大会
查看>>
2014 值得关注的信息安全发展趋势
查看>>
2016年互联网行业十大预测:云计算大数据
查看>>
BlackHat2017热点之DefPloreX---大规模网络犯罪取证的机器学习工具
查看>>
你的企业是否有自动补丁管理工具的潜在需求?
查看>>
阿里云异构计算产品家族亮相 覆盖全场景AI和高性能计算需求
查看>>
巴斯夫如何找到清洁餐具的秘密
查看>>
《逻辑与计算机设计基础(原书第5版)》——第1章 1.0数字系统与信息
查看>>
弃2.4GHz!这就是全新Wi-Fi标准802.11ax
查看>>