oracle 日期比较,只比较年月日怎么写?

and to_char(haier_date.sdate,'YYYY-MM-DD')=to_char(haj.hr_end_date,'YYYY-MM-DD')
我是这么写的 不知道有没有简单的方法? 这样写还不走索引
最新回答
浪漫尽失

2024-07-03 05:52:21

代码如下:

d2 := to_date('20190528','yyyymmdd');

  d3 := to_date('20170101','yyyymmdd');

  d4 := sysdate;

  if d1>d3 then --格式不同进行比较

    dbms_output.put_line('d1>d3');

  end if;

  if d2>d3 then --格式相同比较

    dbms_output.put_line('d2>d3');

  end if;

  if d1>d4 then --格式不同进行比较

    dbms_output.put_line('d1>d4');

  end if;

    dbms_output.put_line('d4是:'||d4);

end;

扩展资料

oracle sql日期比较

oracle sql日期比较:

在今天之前:

select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

在今天只后:

select * from up_date where update > to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

select * from up_date where update >= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

精确时间:

select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')

小迷妹

2024-07-03 04:30:20

1、创建测试表,

create table test_date_1(id number, v_date date);

create table test_date_2(id number, v_date date);

2、插入测试数据,

insert into test_date_1

select level, sysdate-level from dual connect by level<200;

insert into test_date_2

select level, sysdate-level from dual connect by level<100;

3、创建索引,

-- Create/Recreate indexes 

create index idx_date_1 on TEST_DATE_1 (v_date);

-- Create/Recreate indexes 

create index idx_date_2 on TEST_DATE_2 (v_date);

4、执行SQL,

select /*+use_index(t idx_date_1) use_index(b idx_date_2)*/

 *

  from TEST_DATE_1 t, TEST_DATE_2 b

 where t.v_date < b.v_date + 1

  and t.v_date > b.v_date - 1

5、按[F5]查看执行计划,可以看到索引是起到了。

酷炸小仙女

2024-07-03 05:50:00

用to_char函数转换后再进行比较。

如emp表中有如下数据:

现要查询hiredate日期为1981年5月1日之前的数据,可用如下语句:

select * from emp where to_char(hiredate,'yyyy-mm-dd')<'1981-05-01';

查询结果:

泪海

2024-07-03 11:33:45

你这样写就可以了,这样是用不到正常的haj.hr_end_date的索引的,但是oracle允许你创建函数索引,
create index dt on haj (to_char(hr_end_date,'YYYY-MM-DD'));
这样你就可以在查询时使用这个新的函数索引。
冭儍冭迗眞

2024-07-03 04:04:42

可以试一下trunc 函数 sysdate假如是2010年7月2号XXXXXXX、 trunc (sysdate,'dd') 就会截取到日