在mysql中,startDate是datetime类型的表字段。
现在需要查询语句时如何处理startDate,使能够只保留日期部分,而时间以后部分全部设置为00:00:00。eg: select * from table where startDate >'2015-08-05'
我现在只想要日期部分的比较,但数据库中存储的是包括时间的值。
在mysql中,startDate是datetime类型的表字段。
现在需要查询语句时如何处理startDate,使能够只保留日期部分,而时间以后部分全部设置为00:00:00。eg: select * from table where startDate >'2015-08-05'
我现在只想要日期部分的比较,但数据库中存储的是包括时间的值。
在where条件中建议不要使用内置函数转换,这样会影响索引。
根据楼主题意应该是想检索某个日期后的记录吧,这个地方我们可以转换下思路,将2015-08-05
换成2015-08-05 00:00:00
同样是可以达到目的的。select * from table where startDate >'2015-08-05 00:00:00'
datetime类型的比较,竟也可以像字符串一样处理,但同时也可以继续进行比较,于是对startDate使用substring函数,截取出年月日,就可以进行比较辣。
like this where substring(startDate,0,10)>'2015-08-05'
其实这里要说一点,本人其实是在使用hibernate时碰到此问题的,本来想着直接使用原生sql,但因为关联表太多,结果还是选用hql,然后呢,hql中也有substring函数,这样就万事大吉啦!
4 回答3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
3 回答1.1k 阅读
1 回答1.4k 阅读
1 回答1.6k 阅读
mysql
日期时间有两种类型,一种是带有time
的叫datetime
另一种就是你说的日期类型date
如果你用date
类型存储datetime
,那么日期部分就是00:00:00
了。把数据类型换一下即可。也可以直接用DATE_FORMAT
格式化一下你的时间日期格式即可eg:
select DATE_FORMAT('2015-06-06 23:22:26','%Y-%m-%d')-->2015-06-06