Обновите ГОД в поле ДАТА

DB2 z/OS Версия 10

Для DATE столбец в таблице, я хотел бы обновить часть ГОДА DATE до 1900. Например, обновить 1981-09-03 в 1900-09-03,

Я попытался использовать следующее:

 UPDATE SERDB.S16_WEB_USERS_T
       SET YEAR(S16_BIRTH_DT) = '1900'
     WHERE YEAR(S16_BIRTH_DT) > '0';

Я получаю следующую ошибку:

НЕЗАКОННЫЙ СИМВОЛ "(". НЕКОТОРЫЕ СИМВОЛЫ, КОТОРЫЕ МОГУТ БЫТЬ ЮРИДИЧЕСКИМИ: = .. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.67.27 Код SQL: -104, Состояние SQL: 42601

У кого-нибудь есть предложения? Спасибо.

1 ответ

Решение

AFAIK, ты не можешь использовать YEAR() установить значение в поле даты в любой платформе или версии DB2.

Придется заняться математикой

 UPDATE SERDB.S16_WEB_USERS_T
       SET S16_BIRTH_DT = S16_BIRTH_DT - (YEAR(S16_BIRTH_DT) - 1900) YEARS 
     WHERE YEAR(S16_BIRTH_DT) > '0';

Но я спрашиваю, почему вы хотите это сделать. Особенно с WHERE YEAR(S16_BIRTH_DT) > '0',

Также обратите внимание, что если дата рождения 29 февраля, дата будет изменена на 28 февраля 1900 года.

Другие вопросы по тегам