DB2SQL中的Excel日期格式到时间戳

DB2SQL中的Excel日期格式到时间戳,db2,Db2,我有一个Excel摘录,它将日期加载到一个格式不一致的表中,当我们将日期复制到另一个表中时,将日期转换为时间戳变得更具挑战性 示例日期为: 5/1/2015 5/15/2015 12/1/2015 12/15/2015 我需要将其转换为时间戳格式。首先,我只是尝试将日期解析并连接成一种格式类似于时间戳的字符类型 时间戳格式需要为:YYYY-MM-DD HH24:MM:SS 我们的DB2实例非常旧,不接受以下函数: 仪器,在字符串中定位 但是,它确实接受:LOCATE 我让代码用于4种日期格式中的

我有一个Excel摘录,它将日期加载到一个格式不一致的表中,当我们将日期复制到另一个表中时,将日期转换为时间戳变得更具挑战性

示例日期为:

5/1/2015 5/15/2015 12/1/2015 12/15/2015 我需要将其转换为时间戳格式。首先,我只是尝试将日期解析并连接成一种格式类似于时间戳的字符类型

时间戳格式需要为:YYYY-MM-DD HH24:MM:SS

我们的DB2实例非常旧,不接受以下函数: 仪器,在字符串中定位

但是,它确实接受:LOCATE

我让代码用于4种日期格式中的2种,因为我在参数中指定了实际数字,而不是使用可以处理不同日期格式的函数。修改查询后,在显示不佳的表中,我的结果如下:

旧日期-新日期

2015年4月3日-2015年4月4日-3/00:00:00

2015年3月30日-2015年3月30日00:00:00

2015年12月31日-2015年1月-3日00:00:00

2015年3月12日-2015年1月-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/ntsql08016 用于JDBC和SQLJ 4.13.127的IBM数据服务器驱动程序
一个选项可能是让DB2IMPORT或LOAD命令进行日期格式转换。在将文件加载到的表中,定义相应的列以具有日期数据类型,然后发出如下DB2命令:

import from yourfile of del modified by dateformat="MM/DD/YYYY" 
   replace into yourtable (column1, column2, ...);

之后,该值将是一个日期-这就是您应该如何存储日期,而不是作为字符串-并且您可以使用VARCHAR_format函数将其格式化为您喜欢的格式。

要完成将CHAR数据类型的日期从多个日期格式转换为时间戳数据类型,只需:

选择TIMESTAMPSTARTDATE,00:00:00
从SCHEMA1.TABLE1中,我得到一个错误:在filetmod中,以字符串“MM/DD/YYYY”开头的用户指定格式DATEFORMAT无效。我的代码使用方法P使用导入语法。显示您使用的确切命令。您是否在格式周围使用了单引号?此外,您可能希望将其更改为M/D/YYYY,以考虑单个数字值。我将其更改为双引号,没有出现错误,但日期的格式与MM/DD/YYYY和M/DD/YYYY以及M/D/YYYY的格式相同。这是因为日期中包含前导零。导入到临时表中的内容将被复制到一个数据类型为TIMESTAMP的字段中。有没有办法直接将其更改为时间戳?TIMESTAMPSTARTDATE,“00:00:00”完成了我们需要的!所有这些额外的代码都不需要了。我尝试了其他与时间戳相关的函数,但出现了错误,所以我错过了这个。谢谢你的帮助!我了解了DB2上IMPORT命令的一些新内容。