I am assuming :TIME_FLD as your host variable. 1. Use SUBSTR FUNCTION SUBSTR(:TIME_FLD,1,2) || ':' || SUBSTR(:TIME_FLD,3,2) || ':' || SUBSTR (:TIME_FLD,5,2) || '.' || SUBSTR(:TIME_FLD,7,2) to store '16000012' as '16:00:00.12' or '16:00:00.120000' Actually the storage of Time depends on the format that you give in its definition.
2. You can also use simple cast(:TIME_FLD as time) but in that case '16345600' will be stored as '16:56:00' so your 3rd and 4th digit are not taken into account.
Can you provide more sample data and column definition for time field .