to_date 和 to_char 使用区别

本文通过解决一个实际问题来阐述Oracle中to_date和to_char函数的区别及正确使用方法,介绍了如何精确地筛选日期范围内的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  to_date 和 to_char 使用区别  2014-03-04 13:54:07

分类: Oracle

      今天有开发人员问,为什么使用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查询是带时分秒的查询,所以当数据库中有时分秒时就会出现差别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值