Конвертировать месяц (дату) в полный месяц (строка) - PullRequest
0 голосов
/ 05 июля 2018

У меня есть поле даты (adate10), которое называется Period со значениями, такими как 07/02/2018.

Мне нужно преобразовать это в строку типа «2 июля 2018 года».

Я могу использовать приведенный ниже код для создания строки Period_String, которая говорит: «2 июля 2018 года». Я не могу понять, как отформатировать месяц как полный месяц, например, «июль». Является ли единственной возможностью создать оператор if / then, который говорит «если 1, то« январь », если 2, то« февраль »и т. Д.? Хотелось, чтобы был встроенный формат, но не могу его найти.

* extract each date element, then format.
compute mo = xdate.month(Period).
compute da = xdate.mday(Period).
compute yr = xdate.year(Period).

formats mo (month) da yr (F4.0).
execute.

* concatentate date elements as strings.
string Period_String (a30).
compute Period_String = concat(ltrim(string(mo,month)), " ", ltrim(string(da,F4)), ", ", ltrim(string(yr,F4))).
execute.

1 Ответ

0 голосов
/ 06 июля 2018

см. Пересмотренный формат месяца (month9 вместо month):

compute Period_String = concat(ltrim(string(mo,month9)), " ", ltrim(string(da,F4)), ", ", ltrim(string(yr,F4))).

EDIT
используя однострочное предложение @ mirirai + получение только первой буквы заглавными буквами:

string Period_String(a20).
COMPUTE Period_String = CONCAT(
            RTRIM(char.substr(STRING(period,MONTH9),1,1)),
            RTRIM(lower(char.substr(STRING(period,MONTH9),2)))," ",
            LTRIM(STRING(XDATE.MDAY(Period),F2)), ", ", 
            LTRIM(STRING(XDATE.YEAR(period),F4))
            ).
...