【发布时间】:2015-06-24 04:32:39
【问题描述】:
我是 Peoplesoft 的新手,只是想将当前日期字段设置为上周日,为此我使用了“工作日”函数,但这会返回一个整数值。如何将返回的整数值转换为日期?谁能帮我解决这个问题? 提前致谢。
【问题讨论】:
标签: peoplesoft peoplesoft-app-engine
我是 Peoplesoft 的新手,只是想将当前日期字段设置为上周日,为此我使用了“工作日”函数,但这会返回一个整数值。如何将返回的整数值转换为日期?谁能帮我解决这个问题? 提前致谢。
【问题讨论】:
标签: peoplesoft peoplesoft-app-engine
我假设你知道上个星期天之前多少天,在这种情况下你可以使用这个功能
AddToDate(date, num_years, num_months, num_days)
它会返回一个日期
例子
AddToDate(Date(),0,0,-3),假设星期天是今天前 3 天
【讨论】:
假设您想要最后一个星期日,例如今天是 2015 年 6 月 30 日,那么上一个星期日是 2015 年 6 月 28 日。
你可以这样做
Local date &dt = %Date;
Local number &num = Weekday(&dt);
WinMessage(Date(&dt - (&num - 1)), 0);
Weekday 函数返回从 1(星期日)到 7(星期六)的数值。 因此,如果您知道今天的日期 (%date),则从中获取工作日。
如果您想获取当前日期以外的另一个日期,请使用 DateValue(date_str) 其中 date_srt 是您想要的日期的字符串值。
另一种方法是
SQLExec(select To_date(:1,'DD/MM/YYYY') - (To_Char(To_date(:1,'DD/MM/YYYY'), 'D') -1) from dual, &dtValue, &dtSunday);
将 &dtValue 替换为您想要的日期
【讨论】:
代码如下:
%Date 用于检索 SYSDATE。
我添加了一些 cmets 来验证结果。
/* Code Begins Here */
Local date &dtSunday;
Local integer &i;
MessageBox(0, "", 0, 0, "SYSDATE - " | %Date);
MessageBox(0, "", 0, 0, "Previous Sunday - 28-June-2015");
&i = Weekday(%Date);
&dtSunday = AddToDate(%Date, 0, 0, - (&i - 1));
MessageBox(0, "", 0, 0, "Computed Sunday - " | &dtSunday);
/* Code Ends Here */
结果如下:
SYSDATE - 2015-07-02 (0,0)
上一个星期日 - 2015 年 6 月 28 日 (0,0)
计算星期日 - 2015-06-28 (0,0)
【讨论】: