关于MySQL数据库如何按时间查询
2024-09-25 18:41:31
这里做了几个测试
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6';
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6 00:00:00';
select * from simingpai where TIMESTAMP(createTime) >= '2015-9-6 18:15:00';
select * from simingpai where DATE(createTime) >= '2015-9-6';
select * from simingpai where DATE(createTime) >= '2015-9-6 00:00:00';
select * from simingpai where DATE(createTime) >= '2015-9-6 00:00:01';
select * from simingpai where DATE(createTime) >= '2015-9-6 18:15:00';
这几条语法都没有问题,TIMESTAMP类型支持时分秒,DATE类型第一条和第二条输出结果相同(估计是忽略了后面的时分秒),但是第三条和第四条语句就会报错。应该是不支持时分秒。
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6;
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6 00:00:00;
select * from simingpai where TIMESTAMP(createTime) >= 2015-9-6 18:15:00;
select * from simingpai where Date(createTime) >= 2015-9-6;
select * from simingpai where DATE(createTime) >= 2015-9-6 00:00:00;
select * from simingpai where DATE(createTime) >= 2015-9-6 00:00:01;
select * from simingpai where DATE(createTime) >= 2015-9-6 18:15:00;
这里的SQL语句中TIMESTAMP类型和DATE类型的第一条语句能输出结果,其他的都不正确。这种格式应该不支持时分秒。
按照时间进行查询
查询当天的所有数据
select * from tg_winner where year(createTime)=year(now()) and month(createTime)=month(now()) and day(createTime)=day(now());
select * from tg_winner where to_days(createTime) = to_days(now());
select * from tg_winner where date(createTime) = curdate();
查询某天的所有数据
select * from tg_winner where DATE(createTime) = '2015-9-6';
select * from tg_winner where to_days(createTime) = to_days('2015-09-06');
select * from tg_winner where createTime = date_format(#{createTime},'%Y-%m-%d %H:%i:%s');
#{createTime}为Mybatis的.xml文件中实体类对应的Date类型的字段。即要传入的日期类型的变量
mysql查询 昨天 一周前 一月前 一年前的数据
mysql 昨天 一周前 一月前 一年前的数据 这里主要用到了DATE_SUB,
参考如下
SELECT * FROM tg_winner
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 DAY)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
where createTime>DATE_SUB(CURDATE(), INTERVAL 1 YEAR
注意:如果数据库中时间以UNIX时间戳的形式存放的话,在时间对比上需要更改为统一格式:
DATE_SUB()返回的是格式化后的时间:2014-05-17
需要用UNIX_TIMESTAMP()转化为UNIX时间戳形式对比:
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 DAY))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 WEEK))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
where createTime>UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
createTime为数据库的时间字段
最新文章
- Tomcat笔记
- hdu 5898 odd-even number 数位DP
- Android 轻量级ORM数据库开源框架ActiveAndroid 源码分析
- 解决NTFS分区上的代码在linux上编译后没有权限执行
- 393. UTF-8 Validation
- 洛谷-拼数-NOIP1998提高组复赛
- 联发科Helio P90,MT6779VWB芯片处理器
- IO通信模型(三)多路复用IO
- ubuntu18.04虚拟机安装docker
- bzoj1831 逆序对 (dp+树状数组)
- 信息摘要算法之一:MD5算法解析及实现
- PC端的鼠标拖拽滑动
- hadoop_spark伪分布式实验环境搭建和运行实例详细教程
- .net Forms身份验证不能用在应用的分布式部署中吗?
- MATLAB 批量处理图片
- ubuntu防火墙ufw使用教程
- js写法【3】
- Log4J &; elk 事故总结
- 基于ASP.NET WebAPI OWIN实现Self-Host项目实战
- PLSQL_统计信息系列03_统计信息的收集
热门文章
- 【ruby】快速安装gems的方法
- 【转】C#访问权限修饰符
- android——单点触控移动,多点触控放大缩小
- iOS - 代码查看控制台打印内存使用情况:
- ModalDialog.js
- 【JQGRID DOCUMENTATION】.学习笔记.4.Navigator
- mysql5.5.x升级到mysql5.6.x
- [Ogre]纹理设置
- hdu 1016 Prime Ring Problem(深度优先搜索)
- 多校赛3- Solve this interesting problem 分类: 比赛 2015-07-29 21:01 8人阅读 评论(0) 收藏