我想使用SYS.ANYDATA.CONVERTDATE(TRUNC(SYSDATE,'MM'))
获取上个月的第一天和最后一天,因为它允许我仅通过使用SYS.ANYDATA.CONVERTDATE
转换日期来使用工作链脚本中的日期。
在ARGUMENT_NAME
的{{1}}中,我想将上个月日期的第一天放在IN_DATE_FROM_DTS
参数中。在DEFAULT_VALUE
的{{1}}中,我想在ARGUMENT_NAME
参数中输入上个月日期的最后一天。
IN_DATE_TO_DTS
答案 0 :(得分:1)
这将在之前的几个月中起作用:
select trunc(add_months(sysdate,-1), 'MM'),last_day(add_months(sysdate,-1)) from dual;
示例输出:
01-08-18 31-08-18
为了得到一天,它将是:
select TO_CHAR((select trunc(add_months(sysdate,-1), 'MM') from dual),
'DAY') ,TO_CHAR((select
last_day(add_months(sysdate,-1)) from dual), 'DAY')from dual;
示例输出:
WEDNESDAY FRIDAY
答案 1 :(得分:1)
我只需要修改条件SYS.ANYDATA.CONVERTDATE(TRUNC(SYSDATE,'MM')),以便获得上个月的第一个日期和最后一个日期
因此,实际上您只是在问如何获取上个月的第一天和最后一天,而不是TRUNC(SYSDATE,'MM')
所获得的当月第一天。
您可以使用add_months()
和last_day()
函数。要查看当前月份的第一天和最后一天,您可以使用:
select sysdate as raw_date,
trunc(sysdate, 'MM') as first_of_month,
last_day(trunc(sysdate)) as last_of_month
from dual;
RAW_DATE FIRST_OF_MONTH LAST_OF_MONTH
------------------- ------------------- -------------------
2018-09-18 10:30:33 2018-09-01 00:00:00 2018-09-30 00:00:00
上个月:
select add_months(sysdate, -1) as raw_date,
trunc(add_months(sysdate, -1), 'MM') as first_of_month,
last_day(trunc(add_months(sysdate, -1))) as last_of_month
from dual;
RAW_DATE FIRST_OF_MONTH LAST_OF_MONTH
------------------- ------------------- -------------------
2018-08-18 10:30:33 2018-08-01 00:00:00 2018-08-31 00:00:00
作为anydata
,您可以使用:
sys.anydata.convertdate(trunc(add_months(sysdate, -1), 'MM'))
sys.anydata.convertdate(last_day(trunc(add_months(sysdate, -1))))
如此:
select sys.anydata.convertdate(trunc(add_months(sysdate, -1),'MM')) as first_of_month,
sys.anydata.convertdate(last_day(trunc(add_months(sysdate, -1)))) as last_of_month
from dual;
FIRST_OF_MONTH()
------------------------------------------------------------------------------------------------------------------------
LAST_OF_MONTH()
------------------------------------------------------------------------------------------------------------------------
ANYDATA()
ANYDATA()
转换回实际显示日期:
select sys.anydata.convertdate(trunc(add_months(sysdate, -1), 'MM')).accessdate()
as first_of_month,
sys.anydata.convertdate(last_day(trunc(add_months(sysdate, -1)))).accessdate()
as last_of_month
from dual;
FIRST_OF_MONTH LAST_OF_MONTH
------------------- -------------------
2018-08-01 00:00:00 2018-08-31 00:00:00