mybatis对于时间的时分秒的处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cherry_xiu/article/details/82117084

前言

每次前台传入关于时间的查询,我总是很纠结,数据库查询时,对于时分秒到底是如何处理的,特此总结,如有错误请指正!!!

可以先了解sqlDate与utilDate的区别java.util.Date 与 java.sql.Date 与 String 的转换

准备

mysql

SQL DATE(日期函数)

数据库的字段date格式,没有时分秒,datetime格式的,有时分秒

关于参数带时分秒的查询

mysql数据库数据(由于网上有人说datetime类型的数据,如果用不带时分秒的查是没有数据的,稍后测试oracle,现在测试mysql)

表结构
CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `startDate` date DEFAULT NULL,
  `endDate` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
数据
id username startDate endDate
1 1 2018-05-22 2018-06-25 00:00:00
1 2 2018-05-22 2018-06-25 17:36:43
1 3 2018-05-22 2018-06-25 23:59:59
1 4 2018-05-22 2018-06-26 00:00:00
先测试date类型的startDate
select id from users where startDate <= :startDate
传入的startDate值 查询出来的id
2018-05-27 1,2,3,4
2018-05-22 1,2,3,4
2018-05-21
2018-05-27 00:00:00 1,2,3,4
2018-05-22 00:00:00 1,2,3,4
2018-05-21 00:00:00
测试datetime类型的endDate
select id from users where endDate <= :endDate
传入的endDate值 查询出来的id
2018-06-24
2018-06-25 1
2018-06-26 1,2,3,4
2018-06-24 23:59:59
2018-06-25 00:00:00 1
2018-06-25 23:59:59 1,2,3
2018-06-26 00:00:00 1,2,3,4

综上可知:

1)对于date类型,没有时分秒,就直接比较
2)对于datetime类型
2.1传入的参数没有带时分秒,如”2018-06-22”,则实际查询的”2018-06-22 00:00:00”
2.2传入的参数带了时分秒,则按时分秒计算
3)对于datetime类型,使用了date()函数
实际上是将数据库里的数据的时分秒给截取掉,

猜你喜欢

转载自blog.csdn.net/cherry_xiu/article/details/82117084