灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2483回复:0

[mysql]mysql数据库取得某一段时间内的纪录

楼主#
更多 发布于:2013-05-13 10:17

mysql数据库取得某一段时间内的纪录
 
一般来说,我们在mysql数据库纪录数据时间时,都会选择datatime类型,这样时间可以精确到秒。但随之而来的一个问题是,当我们要取得某一段时间内的数据内容会有一些时间转换上的麻烦,例如我们要取得2002年3月2日到2003年7月8日的这段时间的内容,我们第一个直觉就是应该将sql写成下面的形式:
 
select * from yourdb where sj>='2002-3-2' and sj<= '2003-7-8'
 
 这样以来,我们取得数据内容就是2002年3月2日0点以后到2003年7月8日0点(也就是7月7号12点之前)之间的内容,这个当然不是我们想要的,所以需要使用mysql的时间函数to_days()来写这个sql:
 
select * from yourdb where to_days(sj)>=to_days('2002-3-2') and sj<= to_days('2003-7-8')
 
 现在,我们所取得就是我们想要的结果了。
 
比如我要取这样的广告位 :广告位id为1,并且时间上前后限定;
 
select * from t_ads a where a.adsPosId = 1 and TO_DAYS(NOW()) >= TO_DAYS(a.beginDate)
and TO_DAYS(NOW()) < TO_DAYS(a.endDate)

喜欢0 评分0
游客

返回顶部