您可以使用这个 Oracle 答案:
SELECT ( TRUNC( SYSDATE, 'IW' ) - TRUNC( created, 'IW' ) ) * 5 / 7
+ LEAST( SYSDATE - TRUNC( SYSDATE, 'IW' ) + 1, 5 )
- LEAST( created - TRUNC( created, 'IW' ) + 1, 5 )
AS WeekDaysDifference
FROM incidents;
其中,对于样本数据:
CREATE TABLE incidents ( created ) AS
SELECT DATE '2020-12-31' FROM DUAL UNION ALL
SELECT DATE '2021-01-01' FROM DUAL UNION ALL
SELECT SYSDATE FROM DUAL
输出:
| 平日差异 |
| ---------------------------------------: |
| 2.83034722222222222222222222222222222222 |
| 1.83034722222222222222222222222222222222 |
| 0 |
db<>在这里摆弄
查看 Oracle RightNow CRM 文档,您可以将 Oracle 解决方案转换为:
DATE_DIFF(
DATE_TRUNC( SYSDATE(), 'IWEEKS' ),
DATE_TRUNC( incidents.created, 'IWEEKS' )
) / 86400 * 5 / 7
+
IF (
DATE_DIFF(SYSDATE(), DATE_TRUNC(SYSDATE(), 'IWEEKS')) / 86400 < 5,
DATE_DIFF(SYSDATE(), DATE_TRUNC(SYSDATE(), 'IWEEKS')) / 86400,
5
)
-
IF (
DATE_DIFF(incidents.created, DATE_TRUNC(incidents.created, 'IWEEKS')) / 86400 < 5,
DATE_DIFF(incidents.created, DATE_TRUNC(incidents.created, 'IWEEKS')) / 86400,
5
)
(注意:我无法访问 Oracle RightNow 环境,因此转换未经测试且仅基于文档,可能存在错误或可能的改进;但是,希望为您提供解决方案就足够了。)