Excel日期格式到DB2 SQL中的时间戳

时间:2015-05-14 18:45:10

标签: db2

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

示例日期为:

  1. 2015年5月1日
  2. 2015年5月15日
  3. 2015年12月1日
  4. 2015年12月15日
  5. 我需要将其转换为时间戳格式。首先,我只是试图将日期解析并连接成一个格式化为时间戳的字符类型。

    时间戳格式必须为:YYYY-MM-DD HH24:MM:SS

    我们的DB2实例很旧,不接受以下功能: INSTRLOCATE_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版本的信息:

    • DB2 / NT SQL08016
    • 用于JDBC和SQLJ 4.13.127的IBM数据服务器驱动程序

2 个答案:

答案 0 :(得分:0)

一个选项可能是使DB2 IMPORTLOAD命令执行日期格式转换。在表中,您将文件加载到,将相应的列定义为具有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