to_date 和 to_char 使用区别
2014-03-04 13:54:07
分类: Oracle
今天有开发人员问,为什么使用to_date不能把当日的数据查出来,开发提交给dba的sql如下:
虽然使用了“=”,但是并没有把2013-03-04和2014-03-04的数据查出来,然后我让他把sql改成了下面这样:
或者
此时就能查询出
2013-03-04和2014-03-04这两天的数据了,
究其原因,是因为 to_date查询是带时分秒的查询,所以当数据库中有时分秒时就会出现差别
- 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\');
- 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\';
究其原因,是因为 to_date查询是带时分秒的查询,所以当数据库中有时分秒时就会出现差别