Excel DB2 中的日期格式到时间戳 SQL
Excel Date Format To Timestamp in DB2 SQL
我有一个 Excel 提取将日期加载到格式不一致的 table 中,这使得当我们将其复制到另一个 [=72] 时转换为时间戳更具挑战性=].
示例日期是:
- 2015 年 5 月 1 日
- 2015 年 5 月 15 日
- 12/1/2015
- 12/15/2015
我需要将其转换为时间戳格式。首先,我只是尝试将日期解析并连接成格式类似于时间戳的字符类型。
时间戳格式需要为:YYYY-MM-DD HH24:MM:SS
我们的DB2实例很旧,不接受以下功能:
INSTR
、LOCATE_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/NT SQL08016
- 用于 JDBC 和 SQLJ 4.13.127
的 IBM 数据服务器驱动程序
一个选项可能是让 DB2 IMPORT
或 LOAD
命令执行日期格式转换。在要将文件加载到的 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
我有一个 Excel 提取将日期加载到格式不一致的 table 中,这使得当我们将其复制到另一个 [=72] 时转换为时间戳更具挑战性=].
示例日期是:
- 2015 年 5 月 1 日
- 2015 年 5 月 15 日
- 12/1/2015
- 12/15/2015
我需要将其转换为时间戳格式。首先,我只是尝试将日期解析并连接成格式类似于时间戳的字符类型。
时间戳格式需要为:YYYY-MM-DD HH24:MM:SS
我们的DB2实例很旧,不接受以下功能:
INSTR
、LOCATE_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/NT SQL08016
- 用于 JDBC 和 SQLJ 4.13.127 的 IBM 数据服务器驱动程序
一个选项可能是让 DB2 IMPORT
或 LOAD
命令执行日期格式转换。在要将文件加载到的 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