SQL 从时间戳差异中提取值
SQL Extract Values from Timestamp Difference
我正在尝试从减去 Oracle 数据库中的两个时间戳的输出中提取天、小时、分钟、秒。然后我想获取提取的值并将它们放入单独的列中。我可以使用 substr 完成此操作,但这似乎效率不高。是否有更有效和程序化的方式来提取值?下面是一个包含当前和所需输出的示例查询。
示例:
SELECT
to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss')
as TIME_DIFF,
SUBSTR(to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss'), 9, 2)
as DAYS
from dual
当前输出:
TIME_DIFF | DAYS
------------------------------+-----
+000000016 01:35:00.000000000 | 16
期望输出:
DAYS | HOUR | MIN | SS
-----+------+-----+---+
16 | 01 | 35 | 00
您可以使用extract()
从区间中提取所需的值:
with t as (
select to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss')
as TIME_DIFF
from dual
)
select
extract(day from time_diff) days,
extract(hour from time_diff) hours,
extract(minute from time_diff) minutes,
extract(second from time_diff) seconds
from t
DAYS | HOURS | MINUTES | SECONDS
---: | ----: | ------: | ------:
16 | 1 | 35 | 0
你可以看看 extract()
查看这个答案:
我正在尝试从减去 Oracle 数据库中的两个时间戳的输出中提取天、小时、分钟、秒。然后我想获取提取的值并将它们放入单独的列中。我可以使用 substr 完成此操作,但这似乎效率不高。是否有更有效和程序化的方式来提取值?下面是一个包含当前和所需输出的示例查询。
示例:
SELECT
to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss')
as TIME_DIFF,
SUBSTR(to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss'), 9, 2)
as DAYS
from dual
当前输出:
TIME_DIFF | DAYS
------------------------------+-----
+000000016 01:35:00.000000000 | 16
期望输出:
DAYS | HOUR | MIN | SS
-----+------+-----+---+
16 | 01 | 35 | 00
您可以使用extract()
从区间中提取所需的值:
with t as (
select to_timestamp('2019-11-10 15:00:00', 'YYYY-MM-DD hh24:mi:ss') -
to_timestamp('2019-10-25 13:25:00', 'YYYY-MM-DD hh24:mi:ss')
as TIME_DIFF
from dual
)
select
extract(day from time_diff) days,
extract(hour from time_diff) hours,
extract(minute from time_diff) minutes,
extract(second from time_diff) seconds
from t
DAYS | HOURS | MINUTES | SECONDS ---: | ----: | ------: | ------: 16 | 1 | 35 | 0
你可以看看 extract()
查看这个答案: