在 Oracle 中,如何获取以 12 小时格式存储日期的 2 个日期之间的时差(以小时为单位)?
How to get the time difference in hours between 2 dates where dates are stored in 12 hour format in Oracle?
我有两个日期:日期 1:20-Mar-2020 07:35:00 PM
和日期 2:20-Mar-2020 02:42:00 PM
我已经写了查询:
SELECT ROUND(minutes / 60, 2) || ' Hours '
FROM ( SELECT (Date1 - to_date(Date2, 'DD-MON-YYYY HH12:MI:SS')) * 24 * 60 AS minutes
FROM dual
);
但是我没有得到想要的结果,它显示 19.58 小时是错误的,请指正我哪里错了?
正如 Mat 所说,您需要将两个字符串都转换为日期,然后将它们相减:
to_date(date1, 'dd-mon-yyyy hh12:mi:ss am') - to_date(date2, 'dd-mon-yyyy hh12:mi:ss am')
请注意,您的格式说明符缺少 am
部分。
这会为您提供十进制天数形式的结果,然后您可以通过将其乘以 24 来转换小时数:
round(
(
to_date(date1, 'dd-mon-yyyy hh12:mi:ss am')
- to_date(date2, 'dd-mon-yyyy hh12:mi:ss am')
) * 24,
2
) || ' hours'
select round(
(
to_date('20-Mar-2020 07:35:00 PM', 'dd-mon-yyyy hh12:mi:ss am')
- to_date('20-Mar-2020 02:42:00 PM', 'dd-mon-yyyy hh12:mi:ss am')
) * 24,
2
) || ' hours' res
from dual
| RES |
| :--------- |
| 4.88 hours |
我有两个日期:日期 1:20-Mar-2020 07:35:00 PM
和日期 2:20-Mar-2020 02:42:00 PM
我已经写了查询:
SELECT ROUND(minutes / 60, 2) || ' Hours '
FROM ( SELECT (Date1 - to_date(Date2, 'DD-MON-YYYY HH12:MI:SS')) * 24 * 60 AS minutes
FROM dual
);
但是我没有得到想要的结果,它显示 19.58 小时是错误的,请指正我哪里错了?
正如 Mat 所说,您需要将两个字符串都转换为日期,然后将它们相减:
to_date(date1, 'dd-mon-yyyy hh12:mi:ss am') - to_date(date2, 'dd-mon-yyyy hh12:mi:ss am')
请注意,您的格式说明符缺少 am
部分。
这会为您提供十进制天数形式的结果,然后您可以通过将其乘以 24 来转换小时数:
round(
(
to_date(date1, 'dd-mon-yyyy hh12:mi:ss am')
- to_date(date2, 'dd-mon-yyyy hh12:mi:ss am')
) * 24,
2
) || ' hours'
select round(
(
to_date('20-Mar-2020 07:35:00 PM', 'dd-mon-yyyy hh12:mi:ss am')
- to_date('20-Mar-2020 02:42:00 PM', 'dd-mon-yyyy hh12:mi:ss am')
) * 24,
2
) || ' hours' res
from dual
| RES | | :--------- | | 4.88 hours |