Я знаю, что это уже ответил, но следующий демонстрирует, возможно, чище и более прямой подход.
Предположив значение CHAR вы хотите преобразовать это «20140101», то вы можете сделать что-либо:
select date('20140101'||'000000') from sysibm.sysdummy1;
или
select timestamp('20140101'||'000000') from sysibm.sysdummy1;
Далее следует более полный пример с большим количеством функций и преобразований, что демонстрирует выбор и преобразование данных из фактической (хотя временной) таблицы:
-- Create a temp table to demonstrate with:
declare global temporary table DateExample (
ID Integer,
RealTSField Timestamp,
DateCharField CHAR(8),
TSCharField CHAR(20)
) with replace;
-- Insert a demo record to work with:
insert into session.DateExample values(1, '2014-01-01 12:30:23.123456', '20140101', '20140101123023123456');
-- Show what's in the table at this point:
select * from session.DateExample;
-- Now show the conversions in action:
select
d.*,
date(DateCharField||'000000') DateFromDateCharField, -- implicit conversion from YYYYMMDD via tacking on HHMISS as '000000' string
timestamp(DateCharField||'000000') TSFromDateCharField, -- implicit conversion from YYYYMMDD via tacking on HHMISS as '000000' string
timestamp(LEFT(TSCharField,14)) TSFromTSCharField, -- implicit conversion does not support fractional seconds hence we must use LEFT()
timestamp_format(TSCharField, 'YYYYMMDDHH24MISSNNNNNN') TSFromCharField_ExplicitFormat --explicit conversion with timestamp_format
from session.DateExample d;
Вероятно, самый простой способ попробовать это - вставить в окно Ops Navigator «Запуск SQL Scripts», поместив курсор в первую строку, затем многократно нажимая Ctrl-Y, чтобы последовательно запускать каждое утверждение, чтобы следовать дальше.