登录
首页 >  数据库 >  MySQL

MySql中TO_DAYS函数和DATE_DIFF函数

来源:SegmentFault

时间:2023-01-11 11:43:06 222浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《MySql中TO_DAYS函数和DATE_DIFF函数》,文章讲解的知识点主要包括MySQL,如果你对数据库方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

to_days(2008-10-22)干啥的

返回0到2008年10月22日的天数,那可太多天了, 可以用来统计昨天或前天的数据

例子:

统计昨天的数据

select * from tablename where to_days(now())-to_days(created_time) = 1;

统计前天的数据
select * from tablename where to_days(now())-to_days(created_time) = 2;

统计昨天的api访问记录(api_recording)中都有哪些代理商(agent)
select distinct a.name, r.agent_no from api_recording r left join agent a on a.no=r.agent_no where to_days(now())-to_days(r.created)=1

注释:左链接,左表返回全量数据

datediff(date1, date2)干啥的

返回date1和date2两个datetime之间的天数, 其实跟to_days差不多
参数是合法的日期或日期/时间表达式。
注释

  1. 只有值的日期部分参与计算。
  2. 当日期date1date2 时函数返回值为负数。
  3. Mysql的DATEDIFF只有两个参数。SQL Server有三个参数,

注意:因为对索引列使用函数会导致索引失效,如果查询时需要使用到索引,请使用MySQL DATE_SUB() 函数

查询当天的所有数据

SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=0

查询昨天的所有数据

SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=-1

查询未来第n天的所有数据
当n为负数时,表示过去第n天的数据

SELECT * FROM 表名WHERE DATEDIFF(字段,NOW())=n

查询未来n天内所有数据
n天内

SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=0

查询过去n天内所有数据
包含当天

SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())-n

不包含当天
SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())-n

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>