今天有开发人员问,为什么使用to_date不能把当日的数据查出来,开发提交给dba的sql如下:
-
select *
-
from lsmp_lottery_user l
-
where l.LUSER_STATUS = 1
-
and l.LUSER_REGISTER_TIME >= to_date(\'2013-03-04\', \'yyyy-mm-dd\')
-
and l.LUSER_REGISTER_TIME <= to_date(\'2014-03-04\', \'yyyy-mm-dd\');
虽然使用了“=”,但是并没有把2013-03-04和2014-03-04的数据查出来,然后我让他把sql改成了下面这样:
-
select *
-
from lsmp_lottery_user l
-
where l.LUSER_STATUS = 1
-
and l.LUSER_REGISTER_TIME >= to_date(\'2013-03-04 00:00:00\', \'yyyy-mm-dd hh24:mi:ss\')
-
and l.LUSER_REGISTER_TIME <= to_date(\'2014-03-04 23:59:59\', \'yyyy-mm-dd hh24:mi:ss\');
或者
-
select *
-
from lsmp_lottery_user l
-
where l.LUSER_STATUS = 1
-
and to_char(l.LUSER_REGISTER_TIME, \'yyyy-mm-dd\') >=\'2013-03-04\'
-
and to_char(l.LUSER_REGISTER_TIME, \'yyyy-mm-dd\') <=\'2014-03-04\';
此时就能查询出
2013-03-04和2014-03-04这两天的数据了,
究其原因,是因为to_date查询是带时分秒的查询,所以当数据库中有时分秒时就会出现差别
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29008475/viewspace-1100735/
,如需转载,请注明出处,否则将追究法律责任。