MySql中TO_DAYS函数和DATE_DIFF函数
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差不多
参数是合法的日期或日期/时间表达式。
注释
- 只有值的日期部分参与计算。
- 当日期date1<date2时函数返回值为正数,date1=date2时函数返回值为0,date1>date2 时函数返回值为负数。
- 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())<n AND DATEDIFF(字段,NOW())>=0
查询过去n天内所有数据
包含当天SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())<=0 AND DATEDIFF(字段,NOW())>-n
不包含当天SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())<0 AND DATEDIFF(字段,NOW())>-n
Python平凡之路
MySQL常用语法命令及函数
Alei_杨磊阅读 1.7k
初学后端,如何做好表结构设计?
王中阳Go赞 4阅读 1.7k评论 2
Vue+Express+Mysql全栈项目之增删改查、分页排序导出表格功能
水冗水孚赞 4阅读 2.6k
MySQL百万数据深度分页优化思路分析
一个程序员的成长赞 7阅读 868
深入理解MySQL索引底层数据结构
京东云开发者赞 3阅读 571
Laravel入门及实践,快速上手ThinkSNS+二次开发
ThinkSNS赞 1阅读 2.4k
一文了解MySQL中的多版本并发控制
京东云开发者赞 2阅读 495
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。