dcl-s сегодняшняя дата inz(*Sys) — текущая системная дата. Как получить первый день первого месяца текущего года в этом формате 2017/01/01
как получить первый день первого месяца текущего года в RPGLE
Ответы (2)
Вы можете изучить встроенную функцию %SUBST< /а>.
date = d'1999-02-17';
time = t'01.23.45';
timestamp = z'1999-02-17-01.23.45.98765';
num = %subdt(date:*YEARS);
// num = 1999
num = %subdt(time:*MN);
// num = 23
person
Barry
schedule
06.12.2017
Как я могу получить первый день первого месяца текущего года в моем примере поля даты по умолчанию: текущий год (2007)/01/01
- person Georges Sery; 06.12.2017
Итак, первый день первого месяца любого года равен 1/1, верно? все, что вам нужно получить, это год, а затем построить строку. Этот ответ расскажет вам, как извлечь год из даты. Вы должны быть в состоянии выяснить, как построить дату.
- person jmarkmurphy; 06.12.2017
Вот хитрый трюк:
dcl-proc BuildDate;
dcl-pi *n date;
pyear int(5) const;
pmonth int(5) const;
pday int(5) const;
end-pi;
dcl-ds *n;
dateds date(*iso) inz(d'0001-01-01');
year zoned(4:0) pos(1);
month zoned(2:0) pos(6);
day zoned(2:0) pos(9);
end-ds;
year = pyear;
month = pmonth;
day = pday;
test(e) dateds;
if %error;
reset dateds;
endif;
return dateds;
end-proc;
Теперь все, что вам нужно сделать, чтобы построить действительную дату с учетом дня, месяца и года, это:
FirstDOY = BuildDate(%subdt(%date(): *Y): 1: 1);
person
jmarkmurphy
schedule
06.12.2017