我有一个Excel摘录,它将日期加载到不是一致格式的表中,这使得在将它们复制到另一个表时转换为时间戳更具挑战性。
示例日期为:
我需要将其转换为时间戳格式。首先,我只是试图将日期解析并连接成一个格式化为时间戳的字符类型。
时间戳格式必须为:YYYY-MM-DD HH24:MM:SS
我们的DB2实例很旧,不接受以下功能:
INSTR
,LOCATE_IN_STRING
但是,它确实接受:LOCATE
我的代码适用于4种日期格式中的2种,因为我在参数中指定了实际数字,而不是使用可以处理不同日期格式的函数。修改查询后,在显示不佳的表中,我的结果是:
旧日期 - 新日期
2015年4月3日 - 2015-04-3 / 00:00:00
2015年3月30日 - 2015-03-30 00:00:00
2015年12月31日 - 2015-01- / 3 00:00:00
2015年12月3日 - 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版本的信息:
答案 0 :(得分:0)
一个选项可能是使DB2 IMPORT
或LOAD
命令执行日期格式转换。在表中,您将文件加载到,将相应的列定义为具有DATE
数据类型,然后发出如下所示的DB2命令:
import from yourfile of del modified by dateformat="MM/DD/YYYY"
replace into yourtable (column1, column2, ...);
之后,该值将为DATE
- 这就是您应该如何存储日期,而不是字符串, - 您可以使用VARCHAR_FORMAT()
函数根据自己的喜好对其进行格式化。
答案 1 :(得分:0)
要完成将CHAR数据类型的日期从多种日期格式转换为时间戳数据类型,所需的全部内容是:
SELECT TIMESTAMP(STARTDATE,“00:00:00”) 来自SCHEMA1.TABLE1