mysql日期函_mysql日期函数

日期操作是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)

持续补充中~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值