Oracle数据库中日期时间格式不正确,已转换为小时和分钟

j2datikz  于 2023-03-07  发布在  Oracle
关注(0)|答案(1)|浏览(114)

不要问我为什么,但由于某种原因,我们有一个日期时间列,这是在错误的格式,我需要帮助转换。
DB中的时间戳示例:2020年1012.18.44.000000000上午
在上面的示例中,小时实际上是18分钟,而分钟是44分钟。
不知道这是怎么发生的12是默认的一切。所有我想做的是得到的差异,在HH:MM从2个时间戳,但我不知道如何正确地转换这与小时是在分钟部分和分钟是在秒部分。
我正在寻找的示例:
2020年1012.18.44.00000000010月112.12.42.000000000上午
输出:06:02。因此在本例中时间跨度将为6小时2分钟。

toiithl6

toiithl61#

在上面的示例中,小时实际上是18分钟,而分钟是44分钟。
不知道这是怎么发生的12是默认的一切。所有我想做的是得到的差异,在HH:MM从2个时间戳,但我不知道如何正确地转换这与小时是在分钟部分和分钟是在秒部分。

  • 要将分钟转换为小时,需要乘以60。
  • 要将秒转换为分钟,还需要乘以60。
  • 所以,如果你想转换正确值的时间部分,那么你可以把从午夜开始的时间乘以60。
  • 如果你想得到当前时间和正确时间之间的差值(乘以60后),那么你想减去当前时间(可以简化为乘以59)。

因此,要获得时间差,您可以使用:

SELECT (value - TRUNC(value))*59 AS difference,
       value + (value - TRUNC(value))*59 AS updated_value
FROM   table_name;

因此,对于示例数据:

CREATE TABLE table_name ( value ) AS
SELECT TO_TIMESTAMP( '01-OCT-20 12.18.44.000000000 AM', 'DD-MON-RR HH12.MI.SS.FF9 AM' ) FROM DUAL

则输出为:

DIFFERENCE                    | UPDATED_VALUE             
:---------------------------- | :-------------------------
+000000000 18:25:16.000000000 | 2020-10-01 18:44:00.000000
  • db〈〉小提琴here *

如果您想比较两个错误的值,只需从一个时间戳中减去另一个时间戳,然后乘以60(假设在24小时制中,小时始终为12 AM00):

SELECT (value1 - value2) * 60 AS difference,
       value1,
       value1 + (value1 - TRUNC(value1))*59 AS updated_value1,
       value2,
       value2 + (value2 - TRUNC(value2))*59 AS updated_value2
FROM   table_name;

因此,对于示例数据:

CREATE TABLE table_name ( value1, value2 ) AS
SELECT TO_TIMESTAMP( '01-OCT-20 12.18.44.000000000 AM', 'DD-MON-RR HH12.MI.SS.FF9 AM' ),
       TO_TIMESTAMP( '01-OCT-20 12.12.42.000000000 AM', 'DD-MON-RR HH12.MI.SS.FF9 AM' )
FROM DUAL

输出为:

DIFFERENCE                    | VALUE1                     | UPDATED_VALUE1             | VALUE2                     | UPDATED_VALUE2            
:---------------------------- | :------------------------- | :------------------------- | :------------------------- | :-------------------------
+000000000 06:02:00.000000000 | 2020-10-01 00:18:44.000000 | 2020-10-01 18:44:00.000000 | 2020-10-01 00:12:42.000000 | 2020-10-01 12:42:00.000000

得出的差值为6小时2分钟。

  • db〈〉小提琴here *

相关问题