DB2 TIME类型字段迁移至Oracle的适配类型咨询
解决方案
针对DB2的TIME字段迁移到Oracle的需求,以下是适配你仅需存储'18.09.58'精确时分秒场景的可行方案:
方案1:使用TIMESTAMP类型(推荐)
Oracle的TIMESTAMP类型可精确存储时分秒信息,支持时间运算,是最接近DB2 TIME类型的替代方案。
建表语句:
CREATE TABLE your_table ( time_col TIMESTAMP );
插入数据时,通过TO_TIMESTAMP函数转换格式:
INSERT INTO your_table (time_col) VALUES (TO_TIMESTAMP('18.09.58', 'HH24.MI.SS'));
若仅需查询时分秒部分,可使用:
SELECT TO_CHAR(time_col, 'HH24.MI.SS') FROM your_table;
方案2:使用INTERVAL DAY TO SECOND类型
如果只需要存储纯时间间隔(无日期部分),可采用该类型,注意插入时的格式转换:
建表语句:
CREATE TABLE your_table ( time_col INTERVAL DAY TO SECOND );
插入数据时,将DB2的点分隔格式转为冒号分隔的标准INTERVAL格式:
INSERT INTO your_table (time_col) VALUES (INTERVAL '18:09:58' HOUR TO SECOND);
方案3:使用DATE类型
Oracle的DATE类型包含日期和时间两部分,若能接受附带默认日期(当前会话日期),也可使用:
建表语句:
CREATE TABLE your_table ( time_col DATE );
插入数据时用TO_DATE函数转换:
INSERT INTO your_table (time_col) VALUES (TO_DATE('18.09.58', 'HH24.MI.SS'));
查询时分秒部分同样用TO_CHAR提取即可。
内容的提问来源于stack exchange,提问作者Shiva Karunakaran
相关产品推荐
相关产品推荐

