oracle 函数相关

=================start with   connect by prior语句==================
select * from tb_menu m start with m.id=1 connect by m.parent=prior m.id;--递归查询m.parent = 1的所有数据,即递归查询m.id=1的所有子节点。
select * from tb_menu m start with m.id=38 connect by prior m.parent=m.id;--递归查询m.id=38的记录的parent字段值 = m.id的所有数据,即递归查询m.id=1的所有父节点。

prior修饰哪个字段,就用查出的记录的哪个字段值替换带prior的部分,然后递归迭代出所有数据。

1. 时间差:

天数:

floor(to_date(s.set_hbp_time, 'yyyy-mm-dd hh24:mi:ss') - to_date(r.checkTime, 'yyyy-mm-dd')) <=7

2. 增加或减去月份:
select add_months(to_date('199912','yyyymm'),2) from dual;

3. 给出date2-date1的月份:MONTHS_BETWEEN(date2,date1)

select months_between(to_date('2016-08-01', 'yyyy-mm-dd'),to_date('2016-04-03', 'yyyy-mm-dd')) mon_between from dual;
select floor(months_between(to_date('2016-08-01', 'yyyy-mm-dd'),to_date('2016-04-03', 'yyyy-mm-dd'))) mon_between from dual;
select ceil(months_between(to_date('2016-08-01', 'yyyy-mm-dd'),to_date('2016-04-03', 'yyyy-mm-dd'))) mon_between from dual;

猜你喜欢

转载自wzt7576.iteye.com/blog/2322393
今日推荐