美文网首页
mysql日期函数

mysql日期函数

作者: Taodede | 来源:发表于2018-10-09 18:39 被阅读522次

日期操作是mysql中的常用操作,掌握常用的日期函数、并熟练组合运用能够帮助我们解决查询中的许多难题。
本次笔记主要介绍常用的日期函数,在之后的笔记中可能会介绍几个稍微复杂的日期函数组合使用场景。

笔记大纲:
~~·获取当前日期与时间
~~·获取日期或时间中的某一部分
~~·日期运算

1、获取当前日期与时间
now()、current_timestamp() —— 获取系统执行该语句的日期与时间
sysdate() —— 获取执行到该函数的日期与时间
current_date() —— 获取系统当前日期
current_time() —— 获取系统当前时间
unix_timestamp(now()) —— 获取当前时间戳

mysql> select now(),current_timestamp(),sysdate();
+---------------------+---------------------+---------------------+
| now()               | current_timestamp() | sysdate()           |
+---------------------+---------------------+---------------------+
| 2018-10-09 18:07:12 | 2018-10-09 18:07:12 | 2018-10-09 18:07:12 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2018-10-09     |
+----------------+
1 row in set (0.00 sec)

mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 18:00:30       |
+----------------+
1 row in set (0.00 sec)

mysql> select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
|            1539079679 |
+-----------------------+
1 row in set (0.00 sec)

2、获取日期或时间中的某一部分
年 year()、月 month()、日 day()
时 hour()、分 minute()、秒 second()

mysql> select year(now()),month(now()),day(now());
+-------------+--------------+------------+
| year(now()) | month(now()) | day(now()) |
+-------------+--------------+------------+
|        2018 |           10 |          9 |
+-------------+--------------+------------+
1 row in set (0.00 sec)

mysql> select hour(now()),minute(now()),second(now());
+-------------+---------------+---------------+
| hour(now()) | minute(now()) | second(now()) |
+-------------+---------------+---------------+
|          18 |            13 |            57 |
+-------------+---------------+---------------+
1 row in set (0.00 sec)

获取日期/时间中月名、周名等
monthname(date)
dayname(date)

mysql> select monthname('1990-05-07 13:00:00') as month_name,
    -> dayname('1990-05-07 13:00:00') as day_name;
+------------+----------+
| month_name | day_name |
+------------+----------+
| May        | Monday   |
+------------+----------+
1 row in set (0.00 sec)

除了以上函数,还可用date_format获取日期/时间中的某部分,该函数也可输出指定格式的日期/时间。

mysql> select date_format('1990-05-07 23:24:15', '%Y') as '年',
    -> date_format('1990-05-07 23:24:15', '%m') as '月',
    -> date_format('1990-05-07 23:24:15', '%d') as '日',
    -> date_format('1990-05-07 23:24:15', '%H') as '时',
    -> date_format('1990-05-07 23:24:15', '%m') as '分',
    -> date_format('1990-05-07 23:24:15', '%s') as '秒';
+------+------+------+------+------+------+
| 年   | 月   | 日   | 时   | 分   | 秒   |
+------+------+------+------+------+------+
| 1990 | 05   | 07   | 23   | 05   | 15   |
+------+------+------+------+------+------+
1 row in set (0.00 sec)

mysql> select date_format('1990-05-07 23:24:15','%Y%m%d') as date;
+----------+
| date     |
+----------+
| 19900507 |
+----------+
1 row in set (0.00 sec)

3、日期运算
datediff(date1,date2) —— 计算日期差(date1-date2)
timediff(time1,time2) —— 计算时间差(time1-time2)

mysql> select datediff('1990-05-07 13:00:00','1990-05-08 13:00:00');
+-------------------------------------------------------+
| datediff('1990-05-07 13:00:00','1990-05-08 13:00:00') |
+-------------------------------------------------------+
|                                                    -1 |
+-------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select timediff('1990-05-07 13:00:00','1990-05-08 13:00:00');
+-------------------------------------------------------+
| timediff('1990-05-07 13:00:00','1990-05-08 13:00:00') |
+-------------------------------------------------------+
| -24:00:00                                             |
+-------------------------------------------------------+
1 row in set (0.00 sec)

指定值的日期运算
date_add(date, interval (-)n year/month/day等)

mysql> select date_add('1990-05-07 13:00:00', interval 5 year);
+--------------------------------------------------+
| date_add('1990-05-07 13:00:00', interval 5 year) |
+--------------------------------------------------+
| 1995-05-07 13:00:00                              |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add('1990-05-07 13:00:00', interval -5 day);
+--------------------------------------------------+
| date_add('1990-05-07 13:00:00', interval -5 day) |
+--------------------------------------------------+
| 1990-05-02 13:00:00                              |
+--------------------------------------------------+
1 row in set (0.00 sec)

mysql> select date_add('1990-05-07 13:00:00', interval 10 minute);
+-----------------------------------------------------+
| date_add('1990-05-07 13:00:00', interval 10 minute) |
+-----------------------------------------------------+
| 1990-05-07 13:10:00                                 |
+-----------------------------------------------------+
1 row in set (0.00 sec)

获取该月的最后一天
last_day(date)

mysql> select last_day('1990-05-07 13:00:00');
+---------------------------------+
| last_day('1990-05-07 13:00:00') |
+---------------------------------+
| 1990-05-31                      |
+---------------------------------+
1 row in set (0.00 sec)

dayofyear(date) —— date位于全年中的第几天
dayofmonth(date) —— date位于该月中的第几天
dayofweek(date) —— date位于该周中的第几天(1表示星期天)

mysql> select dayofyear('1990-05-07 13:00:00') as year_num,
    -> dayofmonth('1990-05-07 13:00:00') as month_num,
    -> dayofweek('1990-05-07 13:00:00') as week_num;
+----------+-----------+----------+
| year_num | month_num | week_num |
+----------+-----------+----------+
|      127 |         7 |        2 |
+----------+-----------+----------+
1 row in set (0.00 sec)

持续补充中~

相关文章

网友评论

      本文标题:mysql日期函数

      本文链接:https://www.haomeiwen.com/subject/oisyaftx.html