将DB2 SQL十进制转换为时间 我需要将十进制转换为时间。我有一个小数点时间字段,其中包含这样的数据:
123490 --12:34:90
4506 --00:45:06
171205 --17:12:05
等
我想转换为时间格式,然后计算两次列之间的最小值
在select语句中是否有使用SQL命令或DB2逻辑执行此操作?
答案 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_FORMATtime
返回时间戳的时间部分这基于 DB2 的 iSeries 版本,但也适用于 LUW。