преобразование даты в символ в AS400 - PullRequest
1 голос
/ 28 октября 2010

Я пытаюсь преобразовать текущую дату - 2 месяца в формат ггггммдд и вычесть из нее 1900000.

Oracle был для меня легким

SELECT  TO_CHAR(ADD_MONTHS(SYSDATE,-2),'YYYYMMDD') - 19000000 FROM DUAL 

Может кто-нибудь предложить мне то же самое для AS400 .

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 29 октября 2010

Это должно сработать:

select char(((year(d)-1900) * 100 + month(d)) * 100 + day(d))    
from (select (curdate() - 2 months) as d from sysibm/sysdummy1) s

или, если вы предпочитаете делать то же самое без вложенного выбора, выберите:

select char(((year(curdate() - 2 months) - 1900) * 100 
        + month(curdate() - 2 months)) * 100 
        + day(curdate() - 2 months))   
from sysibm/sysdummy1

Приветствия

1 голос
/ 02 апреля 2014

Простейшим может быть:

SELECT DEC(REPLACE(CHAR(CURDATE() - 2 MONTHS,ISO),'-',''))-19000000 FROM SYSIBM/SYSDUMMY1

Некоторые думают, что можно найти что-то лучше.но это не станет намного проще, несмотря ни на что.

0 голосов
/ 16 сентября 2013

Это небольшой поздний ответ, но он должен помочь:)

select char((year(curdate() - 2 months) * 100          
    + month(curdate() - 2 months)) * 100           
    + day(curdate() - 2 months))                   
from sysibm/sysdummy1                                  

Это почти то же самое, что и ответ karol.mlot, однако вы получите правильный формат, так как вы просилиГГГГММДД

0 голосов
/ 29 октября 2010

ВЫБРАТЬ DEC (SUBSTR (CHAR (ДАТА (СЕЙЧАС ()) - 2 МЕСЯЦА), ISO), 1, 4) || SUBSTR (CHAR (ДАТА (СЕЙЧАС ()) - 2 МЕСЯЦА), ISO), 6, 2) || SUBSTR (CHAR (ДАТА (СЕЙЧАС ()) - 2 МЕСЯЦА), ISO), 9, 2), 8, 0) - 19000000 ОТ ДВОЙНОГО

0 голосов
/ 28 октября 2010
EVAL numericField = %dec(%date(alphaDate:*MDY/):*MDY)

Параметр после поля char должен быть форматом поля char (в качестве примера я использовал * MDY с "/").

Параметр parm в конце выражения должен быть форматом числового поля. Таким образом, этот пример преобразует 22.11.2008 в 11222008.

Если вы хотите преобразовать 2008-11-22 в 20081122, сделайте оба параметра * ISO.

...