我有一个日期时间字段:PAYCOM_IN_TIME
我还有一个手动输入的字段(例如:'07:00:00'): SCHEDULED_CLOCK_IN SCHEDULED_CLOCK_IN 是在我的查询中使用它构建的:
SELECT '07:00:00' SCHEDULED_CLOCK_IN FROM DUAL
我希望以 MINUTES 为单位获得时差:PAYCOM_IN_TIME 减去 SCHEDULED_CLOCK_IN
非常感谢所有帮助!
我有一个日期时间字段:PAYCOM_IN_TIME
我还有一个手动输入的字段(例如:'07:00:00'): SCHEDULED_CLOCK_IN SCHEDULED_CLOCK_IN 是在我的查询中使用它构建的:
SELECT '07:00:00' SCHEDULED_CLOCK_IN FROM DUAL
我希望以 MINUTES 为单位获得时差:PAYCOM_IN_TIME 减去 SCHEDULED_CLOCK_IN
非常感谢所有帮助!
您可以使用:
SELECT paycom_in_time,
scheduled_clock_in,
( TRUNC( paycom_in_time ) + scheduled_clock_in - paycom_in_time ) DAY TO SECOND
AS difference_interval,
ROUND(
( TRUNC( paycom_in_time ) + scheduled_clock_in - paycom_in_time )
* 24 * 60
) AS difference_minutes
FROM table_name
CROSS JOIN (
SELECT INTERVAL '07:00' HOUR TO MINUTE AS scheduled_clock_in FROM DUAL
)
其中,对于样本数据:
CREATE TABLE table_name ( paycom_in_time ) AS
SELECT DATE '2020-10-17' + INTERVAL '07:49' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-10-13' + INTERVAL '06:51' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-10-22' + INTERVAL '06:56' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-10-23' + INTERVAL '06:47' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-10-26' + INTERVAL '06:52' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-10-30' + INTERVAL '06:59' HOUR TO MINUTE FROM DUAL;
输出:
PAYCOM_IN_TIME | SCHEDULED_CLOCK_IN | DIFFERENCE_INTERVAL | DIFFERENCE_MINUTES :----------------- | :----------------- | :----------------- | -----------------: 2020-10-17 07:49:00 | +00 07:00:00 | -00 00:49:00.000000 | -49 2020-10-13 06:51:00 | +00 07:00:00 | +00 00:09:00.000000 | 9 2020-10-22 06:56:00 | +00 07:00:00 | +00 00:04:00.000000 | 4 2020-10-23 06:47:00 | +00 07:00:00 | +00 00:13:00.000000 | 13 2020-10-26 06:52:00 | +00 07:00:00 | +00 00:08:00.000000 | 8 2020-10-30 06:59:00 | +00 07:00:00 | +00 00:01:00.000000 | 1
db<>在这里摆弄
我想到了。我将 hh:mm:ss 文本条目转换为日期时间戳:to_date(to_char(PAYCOM_DATE, 'MM-DD-YYYY') || S.CLOCK_IN, 'MM-DD-YYYY HH24:MI:SS')
然后我计算了分钟:(SCHEDULED_CLOCK_IN - P.CLOCKIN)* 24 * 60 DIFF_MINS
使用带有 SELECT TIME_TO_SEC(TIMEDIFF(paycom, shedulded))/60; 的查询
或者
选择 DATEDIFF(MINUTE, paycom, shedulded) AS [时间以分钟为单位]