【问题标题】:Excel Date Format To Timestamp in DB2 SQLDB2 SQL 中的 Excel 日期格式到时间戳
【发布时间】:2015-05-14 18:45:09
【问题描述】:

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

示例日期为:

  1. 2015 年 5 月 1 日
  2. 2015 年 5 月 15 日
  3. 2015 年 12 月 1 日
  4. 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


    【解决方案1】:

    一种选择可能是让 DB2 IMPORTLOAD 命令进行日期格式转换。在要将文件加载到的表中,将相应的列定义为具有 DATE 数据类型,然后发出如下 DB2 命令:

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

    之后,该值将变为DATE——无论如何,这就是你应该存储日期的方式,而不是字符串——你可以使用VARCHAR_FORMAT()函数将其格式化为你喜欢的格式。

    【讨论】:

    • 我收到一个错误:在 filetmod 中,以字符串“'MM/DD/YYYY'”开头的用户指定格式“DATEFORMAT”无效。我的代码是使用“METHOD P”的 IMPORT 语法。
    • 显示您使用的确切命令。您是否在格式周围使用了单引号?此外,您可能希望将其更改为 "M/D/YYYY" 以考虑个位数的值。
    • 我把它改成了双引号,我没有收到任何错误,但是日期的格式与 MM/DD/YYY 和 M/DD/YYYY 和 M/D/ 的混合格式相同年年。这是由于日期中包含前导零。对我们临时表的导入将被复制到数据类型为 TIMESTAMP 的字段中。有没有办法直接将其更改为时间戳?
    • TIMESTAMP(STARTDATE, '00:00:00') 完成了我们所需要的!
    • 不需要所有额外的代码。我曾尝试过与 TIMESTAMP 相关的其他功能,但出现错误,这就是我错过的原因。不过感谢您的帮助!我学到了一些关于 DB2 上 IMPORT 命令的新知识。
    【解决方案2】:

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

    选择时间戳(开始日期,“00:00:00”) 来自 SCHEMA1.TABLE1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2015-09-28
      • 2018-06-15
      • 1970-01-01
      • 2017-06-08
      相关资源
      最近更新 更多