Ошибка приведения даты в DB2 для позиции параметра 1 - PullRequest
0 голосов
/ 14 апреля 2020

Попытка привести строку (в формате ГГГГ-ММ-ДД) в качестве даты ISO. Это уже в правильном формате, но выдает ошибку.

SELECT
    *
FROM TABLE1
WHERE CHAR(VARCHAR((SUBSTRING(PARAMETER_VALUE,8,4)||
        CASE SUBSTRING(PARAMETER_VALUE,4,3) 
            WHEN 'Jan' THEN '-01-'
            WHEN 'Feb' THEN '-02-'
            WHEN 'Mar' THEN '-03-'
            WHEN 'Apr' THEN '-04-'
            WHEN 'May' THEN '-05-'
            WHEN 'Jun' THEN '-06-'
            WHEN 'Jul' THEN '-07-'
            WHEN 'Aug' THEN '-08-'
            WHEN 'Sep' THEN '-09-'
            WHEN 'Oct' THEN '-10-'
            WHEN 'Nov' THEN '-11-'
            WHEN 'Dec' THEN '-12-' END||
            SUBSTRING(PARAMETER_VALUE,1,2))
        ),ISO) > CURRENT DATE;

Я получаю следующую ошибку: Оператор не был обработан, так как тип данных, длина или значение аргумента для параметра в позиции "1" подпрограммы "SYSIBM.CHAR" неверны. Имя параметра: "" .. SQLCODE = -171, SQLSTATE = 42815, DRIVER = 4.19.56

Я использую IBM Data Studio для запуска этого.

1 Ответ

0 голосов
/ 14 апреля 2020

PARAMETER_VALUE выглядит как DDMonYYYY, если вы хотите использовать TO_DATE аналогично:

SELECT
    *
FROM TABLE1
WHERE TO_DATE(PARAMETER_VALUE, 'DDMonYYYY') > CURRENT DATE;

Если это неправильный формат этого столбца, вы можете собрать правильную строку отсюда: https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0007107.html

...