2016-07-28 12 views
0

DB2 г/OS версии 10Обновление YEAR на поле ДАТА

Для DATE столбца таблицы Я хотел бы обновить YEAR часть 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'; 

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

ILLEGAL SYMBOL "(". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: = .. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.67.27 SQL Code: -104, SQL State: 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 года

+0

Спасибо вам большое! – scddsn

+0

@scddsn, пожалуйста, отметьте ответ как принятый. – Charles