mysql中类型为datetime的时间比较

在mysql中,startDate是datetime类型的表字段。
现在需要查询语句时如何处理startDate,使能够只保留日期部分,而时间以后部分全部设置为00:00:00。
eg: select * from table where startDate >'2015-08-05'
我现在只想要日期部分的比较,但数据库中存储的是包括时间的值。

阅读 76.4k
4 个回答

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

在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函数,这样就万事大吉啦!

今天觉得数据库的join真的好爽呀。尤其是7。8个表交表。爽翻天。抱歉我回复不相干的话。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏