2017-01-27 11 views
1

Я бегу следующий запрос DB2:SET Дата в колонке А типа TIMESTAMP в DB2

UPDATE Table 
SET DATE(COLA) = '2017-03-31' 
WHERE DATE(COLA) = '2017-03-29'; 

КОЛА имеет тип TIMESTAMP.

Пример значения:

COLA: 
2017-03-29-00.00.00.000000 

Ожидаемое обновление Значение:

COLA: 
2017-03-31-00.00.00.000000 

Когда я бегу выше запроса, я получаю

SQL Code SQLCODE = -104,ERROR: ILLEGAL SYMBOL "(". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: = .

Может кто-нибудь помочь мне для этого сценария ?

Большое спасибо!

+2

Функция, такие как 'DATE()', не может находиться на левой части присваивания. Ну, не в SQL так или иначе. – mustaccio

ответ

0

просто сделать это:

UPDATE Table 
SET COLA = '2017-03-31-00.00.00.000000' 
WHERE DATE(COLA) = '2017-03-29'; 
+0

Спасибо большое! Я это попробую. –

+0

UPDATE Таблица SET COLA = '2017-03-31-00.00.00.000000' ГДЕ ДАТА (COLA) = '2017-03-29'; Все работает нормально. Спасибо! –

3

Я считаю, что ваша проблема в части SET. Попробуйте следующее:

UPDATE Table 
SET COLA = DATE('2017-03-31') -- TIMESTAMP ('2017-03-31-00.00.00.000000') 
WHERE DATE(COLA) = '2017-03-29'; 

Вы хотите обновить столбец, не обновляя результат функции, выполняемой в столбце.

+1

Вы можете просто присвоить значение 'DATE' столбцу' TIMESTAMP', а часть времени по умолчанию будет равна нулю: '... SET colA = '2017-03-29' ...' – mustaccio

+0

Спасибо большое! Я это попробую. –

+0

UPDATE Таблица SET COLA = TIMESTAMP ('2017-03-31-00.00.00.000000') ГДЕ ДАТА (COLA) = '2017-03-29'; Все работает нормально. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^