mysql 关于日期的比较

看到@adwangxiao一边博文中描述,问题如下:

如果sql语句是 :select * from table where createtime> '2012-10-10' and  createtime < '2012-10-12' 这样写的,

那么查询出来的结果和 select * from table where (createtime> '2012-10-10' )and  (createtime < '2012-10-12')的结果有什么不同呢? 在Mysql客户端查询出来的结果是一样的,但在项目中用代码实现的效果却不一样。没加括号的,不能精确的查出我想要的结果,也就是说多查询出了错误的数据,而加了括号的,却是对的,这是为什么? 暂不理解.... 

博客原文

由于家里没有安装mysql,希望各位同学测试下面的方式,是否正确。

方法一: 
你也可以:
select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') and unix_timestamp(time1) < unix_timestamp('2011-03-03 17:39:52');
就是用unix_timestamp函数,将字符型的时间,转成unix时间戳。个人觉得这样比较更踏实点儿。
 
方法二:
time1 between '2011-03-03 17:39:05' and '2011-03-03 17:39:52';
 
方法三:
可以讲datetime类型转换成date类型再进行比较
例如:convert(date,表名.datetime列名) >= convert(date,表名.datetime列名)
 
三种方法待求证,总之是不要用字符串这么直接比



转载于:https://my.oschina.net/jmacs/blog/97588

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值