【发布时间】:2015-05-14 18:45:09
【问题描述】:
我有一个 Excel 提取,它会将日期加载到格式不一致的表格中,这使得当我们将其复制到另一个表格时转换为时间戳更具挑战性。
示例日期为:
- 2015 年 5 月 1 日
- 2015 年 5 月 15 日
- 2015 年 12 月 1 日
- 2015 年 12 月 15 日
我需要将其转换为时间戳格式。首先,我只是尝试将日期解析并连接成格式为时间戳的字符类型。
时间戳格式需为:YYYY-MM-DD HH24:MM:SS
我们的 DB2 实例很旧,不接受以下功能:
INSTR, LOCATE_IN_STRING
但是,它确实接受:LOCATE
我的代码适用于 4 种日期格式中的 2 种,因为我在参数中指定了实际数字,而不是使用可以处理不同日期格式的函数。修改查询后,在一个显示不佳的表中,我的结果是:
旧日期 -- 新日期
4/3/2015 -- 2015-04-3/ 00:00:00
3/30/2015 -- 2015-03-30 00:00:00
12/31/2015 -- 2015-01-/3 00:00:00
12/3/2015 -- 2015-01-/3 00:00:00
我上面表格中的“--”表示表格中的不同列。
我当前的代码是:
SELECT
STARTDATE
, RIGHT(LTRIM(RTRIM(STARTDATE)), 4) --YEAR
|| '-'
|| RIGHT('00' || SUBSTR(STARTDATE, 1, LOCATE(STARTDATE, '/', 1)+1), 2) --MONTH
|| '-'
|| LEFT(SUBSTR(STARTDATE, 3, LOCATE(STARTDATE, '/', 1)+2) || '00', 2) --DAY
|| ' 00:00:00' AS STARTDATE
FROM SCHEMA1.TABLE1
谁能帮忙?
关于我们的 DB2 版本的信息:
- DB2/NT SQL08016
- 用于 JDBC 和 SQLJ 4.13.127 的 IBM 数据服务器驱动程序
【问题讨论】:
标签: db2