Reputation: 8726
Following sql is successfully executed in development database.
SQL is for changing datatype from DATETIME
to TIME
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT ALTER COLUMN FROM_DT SET DATA TYPE TIME;
But in deployment database it gives error
Error during Prepare 42601(-104)[IBM][CLI Driver][DB2/NT] SQL0104N An unexpected token "TIME" was found following "ROM_DT SET DATA TYPE". Expected tokens may include: "". SQLSTATE=42601
Upvotes: 1
Views: 1023
Reputation: 8726
Hey may be it because version change of DB2
I have tried following queries to change datatype from DATETIME
to TIME
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT ADD COLUMN TempFromTime TIME ;
CALL SYSPROC.ADMIN_CMD ('reorg table SCHEDULER.MV_SCHDL_APPOINTMENT');
UPDATE SCHEDULER.MV_SCHDL_APPOINTMENT SET TempFromTime =CAST(FROM_DT AS TIME);
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT DROP COLUMN FROM_DT;
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT ADD COLUMN FROM_DT TIME ;
CALL SYSPROC.ADMIN_CMD ('reorg table SCHEDULER.MV_SCHDL_APPOINTMENT');
UPDATE SCHEDULER.MV_SCHDL_APPOINTMENT SET FROM_DT=TempFromTime ;
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT DROP COLUMN TempFromTime;
CALL SYSPROC.ADMIN_CMD ('reorg table SCHEDULER.MV_SCHDL_APPOINTMENT');
Steps:
If you are able to rename column via query, than rename the temporary column and can skip 4,5 and 6th steps.
Following query can be used for renaming column.
ALTER TABLE SCHEDULER.MV_SCHDL_APPOINTMENT CHANGE TempFromTime FROM_DT TIME;
It complete my task.. :) but it is not so good way to do this.
I am still finding the better solution. This solution is also worked for me.
Upvotes: 0