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列名)
 
三种方法待求证,总之是不要用字符串这么直接比



你可能感兴趣的:(sql,mysql)