日期格式化sql plus

时间:2011-03-31 16:22:26

标签: sql oracle date sqlplus

我有这个sql脚本:

select 'LASTBUSDATE='|| to_char(max(calen_dt),'mmdd') LBD
from put_calen
where calen_dt < (select calen_dt from put_calen where ca_run_dt_ind = 'Y')
and business_day_ind = 'Y';
exit;

如何修改此设置,以便我在上个月的第一个工作日和最后一个工作日,如2-1-20112-28-2011

请帮忙。不知道这里发生了什么。

1 个答案:

答案 0 :(得分:0)

我在这里从您的列名称猜测您的表格结构,但是以下是否会返回您想要的内容?

select min(calen_dt) as first_business_day
      ,max(calen_dt) as last_business_day
  from put_calen
 where calen_dt >= trunc(sysdate,'MM') - interval '1' month
   and calen_dt <= trunc(sysdate,'MM') - interval '1' day
   and business_day_ind = 'Y';

如果sysdate =“2011-03-31 19:14:32”,则trunc(sysdate,'MM')将返回“2011-03-01 00:00:00”;基本上截止到月份的日期。

您想要上个月的第一个工作日和最后一个工作日,因此我减去1个月到达上个月的第一个月,并在1个月到达上个月的最后一天。过滤器business_day_ind = 'Y'可确保仅考虑最小/最大的工作日。

让我知道它是如何工作的,或者如果我错过了解你的问题和/或表格结构:)