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

Excel Date Format To Timestamp in DB2 SQL

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

示例日期是:

  1. 2015 年 5 月 1 日
  2. 2015 年 5 月 15 日
  3. 12/1/2015
  4. 12/15/2015

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

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

我们的DB2实例很旧,不接受以下功能: INSTRLOCATE_IN_STRING

但是,它确实接受:LOCATE

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

旧日期 -- 新日期

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

我上面 table 中的“--”表示 table 中的不同列。

我当前的代码是:

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 IMPORTLOAD 命令执行日期格式转换。在要将文件加载到的 table 中,将相应的列定义为具有 DATE 数据类型,然后发出如下 DB2 命令:

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

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

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

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