ITPub博客

首页 > 数据库 > Oracle > to_date 和 to_char 使用区别

to_date 和 to_char 使用区别

原创 Oracle 作者:zqg_1st 时间:2014-03-04 13:54:07 0 删除 编辑
      今天有开发人员问,为什么使用to_date不能把当日的数据查出来,开发提交给dba的sql如下:


  1. select *
  2.   from lsmp_lottery_user l
  3.  where l.LUSER_STATUS = 1
  4.    and l.LUSER_REGISTER_TIME >= to_date(\'2013-03-04\', \'yyyy-mm-dd\')
  5.    and l.LUSER_REGISTER_TIME <= to_date(\'2014-03-04\', \'yyyy-mm-dd\');
虽然使用了“=”,但是并没有把2013-03-04和2014-03-04的数据查出来,然后我让他把sql改成了下面这样:


  1. select *
  2.   from lsmp_lottery_user l
  3.  where l.LUSER_STATUS = 1
  4.    and l.LUSER_REGISTER_TIME >= to_date(\'2013-03-04 00:00:00\', \'yyyy-mm-dd hh24:mi:ss\')
  5.    and l.LUSER_REGISTER_TIME <= to_date(\'2014-03-04 23:59:59\', \'yyyy-mm-dd hh24:mi:ss\');
或者


  1. select *
  2.   from lsmp_lottery_user l
  3.  where l.LUSER_STATUS = 1
  4.    and to_char(l.LUSER_REGISTER_TIME, \'yyyy-mm-dd\') >=\'2013-03-04\'
  5.    and to_char(l.LUSER_REGISTER_TIME, \'yyyy-mm-dd\') <=\'2014-03-04\';
此时就能查询出2013-03-04和2014-03-04这两天的数据了,
究其原因,是因为
to_date查询是带时分秒的查询,所以当数据库中有时分秒时就会出现差别


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29008475/viewspace-1100735/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-09-04

  • 博文量
    24
  • 访问量
    76920