时间和日期函数(MySQL篇)
1. 返回当前时间
(1) CURDATE()/CURRENT_DATE()返回当前日期
select current_date();
+----------------+
| current_date() |
+----------------+
| 2020-05-10 |
+----------------+
(2) CURRENT_TIME()/CURTIME()返回当前时间
select current_time();
+----------------+
| current_time() |
+----------------+
| 09:00:30 |
+----------------+
(3) CURRENT_TIMESTAMP()返回当前日期和时间
select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2020-05-10 09:01:59 |
+---------------------+
2. 从日期表达式中提取值
(1) DATE()从日期或日期时间表达式中提取日期值
select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2020-05-10 |
+---------------------------+
(2) DAYOFWEEK(date):返回日期date的星期索引(1=星期天,2=星期一, …7=星期六)。
select dayofweek(current_timestamp());
+--------------------------------+
| dayofweek(current_timestamp()) |
+--------------------------------+
| 1 |
+--------------------------------+
(3) WEEKDAY(date):返回日期的date星期索引(0=星期一, 1=“星期二”, …6=星期天)
SELECT WEEKDAY(CURRENT_TIMESTAMP());
+------------------------------+
| WEEKDAY(CURRENT_TIMESTAMP()) |
+------------------------------+
| 6 |
+------------------------------+
(4) DAYOFMONTH(date):返回date的月份中的日期,在1到31范围内。
SELECT DAYOFMONTH(CURRENT_TIMESTAMP());
+---------------------------------+
| DAYOFMONTH(CURRENT_TIMESTAMP()) |
+---------------------------------+
| 10 |
+---------------------------------+
(6) DAYOFYEAR(date):返回date在一年中的日数, 在1到366范围内。
SELECT DAYOFYEAR("2020-01-01");
+-------------------------+
| DAYOFYEAR("2020-01-01") |
+-------------------------+
| 1 |
+-------------------------+
(7) MONTH(date):返回date的月份,范围1到12。
(8) DAYNAME(date):返回date的星期名字。
SELECT DAYNAME(CURRENT_TIMESTAMP());
+------------------------------+
| DAYNAME(CURRENT_TIMESTAMP()) |
+------------------------------+
| Sunday |
+------------------------------+
(9) MONTHNAME(date) :返回date的月份名字。
(10) QUARTER(date):返回date一年中的季度,范围1到4。
SELECT QUARTER(CURRENT_TIMESTAMP());
+------------------------------+
| QUARTER(CURRENT_TIMESTAMP()) |
+------------------------------+
| 2 |
+------------------------------+
(11) WEEK(date,first):对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。
第2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。
SELECT WEEK(CURRENT_TIMESTAMP());
+---------------------------+
| WEEK(CURRENT_TIMESTAMP()) |
+---------------------------+
| 19 |
+---------------------------+
SELECT WEEK(CURRENT_TIMESTAMP(),0);
+-----------------------------+
| WEEK(CURRENT_TIMESTAMP(),0) |
+-----------------------------+
| 19 |
+-----------------------------+
SELECT WEEK(CURRENT_TIMESTAMP(),1);
+-----------------------------+
| WEEK(CURRENT_TIMESTAMP(),1) |
+-----------------------------+
| 19 |
+-----------------------------+
(12) YEAR(date):返回date的年份,范围在1000到9999。
(13) HOUR(time):返回time的小时,范围是0到23。
(14) MINUTE(time):返回time的分钟,范围是0到59。
(15) SECOND(time):回来time的秒数,范围是0到59。
3. 时间格式的转换
(1) UNIX_TIMESTAMP()得到时间戳
SELECT UNIX_TIMESTAMP("2020-01-01");
+------------------------------+
| UNIX_TIMESTAMP("2020-01-01") |
+------------------------------+
| 1577808000 |
+------------------------------+
(2) FROM_UNIXTIME()时间戳转日期
SELECT FROM_UNIXTIME(1577808000);
+---------------------------+
| FROM_UNIXTIME(1577808000) |
+---------------------------+
| 2020-01-01 00:00:00 |
+---------------------------+
(3) DATE_FORMAT(): 以不同格式显示日期/时间函数
SELECT DATE_FORMAT("2020-01-01 00:00:00", "%Y-%m-%d");
+------------------------------------------------+
| DATE_FORMAT("2020-01-01 00:00:00", "%Y-%m-%d") |
+------------------------------------------------+
| 2020-01-01 |
+------------------------------------------------+
4. 日期时间的计算函数
(1) DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF("2020-01-01", "2020-02-02");
+--------------------------------------+
| DATEDIFF("2020-01-01", "2020-02-02") |
+--------------------------------------+
| -32 |
+--------------------------------------+
(2)TIMESTAMPDIFF(unit, begin, end): 计算两个时间的差值,unit是返回值单位,可以自定义(eg: DAY, MINITE, HOUR)
SELECT TIMESTAMPDIFF(DAY, "2020-01-01 23:00:00", "2020-02-02 13:00:00");
+------------------------------------------------------------------+
| TIMESTAMPDIFF(DAY, "2020-01-01 23:00:00", "2020-02-02 13:00:00") |
+------------------------------------------------------------------+
| 31 |
+------------------------------------------------------------------+
-- 注意对比:如果此处换成了DATEDIFF, 返回的结果是-32
SELECT TIMESTAMPDIFF(HOUR, "2020-01-01 23:00:00", "2020-02-02 13:00:00");
+-------------------------------------------------------------------+
| TIMESTAMPDIFF(HOUR, "2020-01-01 23:00:00", "2020-02-02 13:00:00") |
+-------------------------------------------------------------------+
| 758 |
+-------------------------------------------------------------------+
(3) TIMESTAMPADD(unit,int_expr,datetime_expr): 将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。
SELECT TIMESTAMPADD(HOUR, 758, "2020-01-01 23:00:00");
+------------------------------------------------+
| TIMESTAMPADD(HOUR, 758, "2020-01-01 23:00:00") |
+------------------------------------------------+
| 2020-02-02 13:00:00 |
+------------------------------------------------+
(4) DATE_ADD(date,INTERVAL expr type) ,进行日期增加的操作,可以精确到秒
SELECT DATE_ADD("2020-01-01 23:00:00", INTERVAL 60 SECOND);
+-----------------------------------------------------+
| DATE_ADD("2020-01-01 23:00:00", INTERVAL 60 SECOND) |
+-----------------------------------------------------+
| 2020-01-01 23:01:00 |
+-----------------------------------------------------+
(5) DATE_SUB(date,INTERVAL expr type) ,进行日期减少的操作,可以精确到秒
SELECT DATE_SUB("2020-01-01 23:00:00", INTERVAL 60 SECOND);
+-----------------------------------------------------+
| DATE_SUB("2020-01-01 23:00:00", INTERVAL 60 SECOND) |
+-----------------------------------------------------+
| 2020-01-01 22:59:00 |
+-----------------------------------------------------+
本文详细介绍了MySQL中常用的时间和日期函数,包括获取当前时间、从日期表达式中提取值、时间格式转换及日期时间计算等核心操作。通过具体示例,展示了CURDATE、CURRENT_TIME、CURRENT_TIMESTAMP等函数的使用,以及如何利用DATE_FORMAT、UNIX_TIMESTAMP、FROM_UNIXTIME进行时间格式转换。
2231

被折叠的 条评论
为什么被折叠?



