将DB2 SQL十进制转换为时间

时间:2018-06-28 10:11:14

标签: sql db2

将DB2 SQL十进制转换为时间 我需要将十进制转换为时间。我有一个小数点时间字段,其中包含这样的数据:

123490 --12:34:90
4506 --00:45:06
171205 --17:12:05

我想转换为时间格式,然后计算两次列之间的最小值

在select语句中是否有使用SQL命令或DB2逻辑执行此操作?

2 个答案:

答案 0 :(得分:0)

要将其转换为有效的时间格式,您必须进行一些字符串操作,例如

cast( substr( right( '00' || '123456', 6) ,1,2) || ':' || substr( right( '00' || '123456', 6) ,3,2) || ':' || substr( right( '00' || '123456', 6) ,5,2) as time)

其中123456是您的小数。这同样适用于您的4506示例。 如果您希望每次都无效地添加“ 00”,也可以使用case语句。

为计算min差,可能会有其他计算选项。 您可以签出minutes_between function provided by Db2 11.1

答案 1 :(得分:0)

您可以使用 TO_DATE,它是 TIMESTAMP_FORMAT 的简短版本,但您首先需要将十进制转换为字符串。

select time(to_date(digits(cast(143513 as dec(6,0))),'HH24MISS')) from sysibm.sysdummy1
  • cast 只是为了模拟 6 位十进制
  • digits 将十进制转换为字符,并用零填充
  • to_date 根据格式字符串将字符串转换为时间戳。 TIMESTAMP_FORMAT
  • time 返回时间戳的时间部分

这基于 DB2 的 iSeries 版本,但也适用于 LUW。