玖叶教程网

前端编程开发入门

每天一个常用MySQL函数-date_add等


场景

sql中处理时间是经常用到的,例如查询30分钟前支付的订单、3天后过期的会员码等,当然这种规格策略有很多实现方式,这里只是举一个例子,方便理解sql中函数的使用。

语法

adddate(d, n) // 当前日期加n天,n默认是天,也可以是分钟:adddate(d, interval 1 minute)
adddate(d, n) // 当前日期加n分钟
addtime(d, n) // 当前日期加n秒
subdate(d, n) // 当前时间减去n天,n默认是天,也可以是分钟:subdate(d, interval 1 minute)
subtime(d, n) // 当前时间减去n秒
datediff(d1, d2)// d1,d2的天数差值

使用

查询1天前支付的订单 order.payment_time(datetime)

select order_number, payment_time from `order` where subdate(`payment_time`, 1);

+--------------+---------------------+
| order_number | payment_time        |
+--------------+---------------------+
|   2147483647 | 2020-04-04 17:25:52 |
+--------------+---------------------+
1 row in set (0.00 sec)


select order_number, payment_time from `order` where subdate(`payment_time`, interval 30 minute);

+--------------+---------------------+
| order_number | payment_time        |
+--------------+---------------------+
|   2147483647 | 2020-04-04 17:25:52 |
+--------------+---------------------+
1 row in set (0.00 sec)

查询3天后过期的会员码 verify_code.expire_time(date)

select code, user_id, expire_date from verify_code where expire_date > adddate(current_date(), 3);

+--------------+---------+-------------+
| code         | user_id | expire_date |
+--------------+---------+-------------+
| VD2003920KES |     121 | 2020-04-10  |
+--------------+---------+-------------+
1 row in set (0.00 sec)

查询user121会员还有几天过期verify_code.expire_time(date)

select code, user_id, expire_date, datediff(expire_date, current_date()) as expire_day from verify_code where user_id = 121;


+--------------+---------+-------------+------------+
| code         | user_id | expire_date | expire_day |
+--------------+---------+-------------+------------+
| VD2003920KES |     121 | 2020-04-10  |          5 |
+--------------+---------+-------------+------------+
1 row in set (0.00 sec)

注意

使用函数之后,函数字段就不能使用索引了,所以灵活性还需要我们自己去把控

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言