欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

mysql日期函数之DATEDIFF() if()用法 case when用法

发布时间:2024/3/13 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql日期函数之DATEDIFF() if()用法 case when用法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

mysql日期函数之DATEDIFF() if()用法 case when用法

背景:
用户密码七天后会过期,用户修改密码时会同步添加修改时间进数据库,
登录时校验用户是否需要修改密码,
一开始想的时用代码执行这些操作,用代码计算,发现巨麻烦,一句sql就可以解决的事儿,为什么还要写那么多代码呢,对吧
思路:
过期时间表,专门存储几天后过期,默认七天

用户表

查询的sql语句
使用if()和DATEDIFF()

select if(E.pastTime>expirationTime, "ture","false") as isUpdate from (select DATEDIFF(now(),U.updateTime) pastTime,t.expirationTime fromoc_expiretime T,oc_users Uwhere U.`name` = 'admin') as E

或者
使用case when和DATEDIFF()

select case expirationTimewhen E.pastTime>expirationTime then "true"else "false"end as isUpdate from (select DATEDIFF(now(),U.updateTime) pastTime,t.expirationTime fromoc_expiretime T,oc_users Uwhere U.`name` = 'admin') as E

DATEDIFF()函数

DATEDIFF()函数返回 date1-date2 后的值
所以在使用的时候now()(当前时间),也就是离现在时间近的时间一定要在前,离现在时间远的的时间要在后面,否则查出来的时负数
例如:

now()在后面的话就会出现负数

select DATEDIFF(U.updateTime,now()) pastTimefromoc_users Uwhere U.`name` = 'admin'

now()在前,离现在时间远的时间在后面,查出来的是正数

select DATEDIFF(now(),U.updateTime) pastTimefromoc_users Uwhere U.`name` = 'admin'

浮世万千吾爱有三
日月与卿
日为朝月为暮
卿为朝朝暮暮

总结

以上是生活随笔为你收集整理的mysql日期函数之DATEDIFF() if()用法 case when用法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。