利用 Oracle 查询判断日期是星期几(oracle判断周几)

查询日期是星期几是Oracle中常见的需求,Oracle 中并没有提供内置的日期类型函数专门来实现此功能,但是可以通过计算和比较获得期望的结果。

计算判断星期几的关键思想是,根据日期,计算出本月1号对应的星期几和查询日期相隔几天,就可以得出结果了。

下面以一个实例来说明以上思路,查询2020年7月14日,这一天是星期几?

首先,可以用以下语句来计算2020-7-1号对应的星期几:

“`SQL

SELECT TO_CHAR(TO_DATE(‘2020-7-1’, ‘YYYY-MM-DD’), ‘DAY’) AS RESULT

FROM DUAL;


计算结果显示,2020-7-1对应的是星期三。

然后,可以用以下语句来计算 2020-7-14 到 2020-7-1 相隔的天数:

```SQL
SELECT TO_NUMBER(TO_CHAR(TO_DATE('2020-7-14', 'YYYY-MM-DD') - TO_DATE('2020-7-1', 'YYYY-MM-DD'))) AS RESULT

计算结果显示,2020-7-14到2020-7-1相差13天。

最后,我们根据以上计算结果,可以得出,2020-7-14号对应的星期几为:星期二。

为了更加方便快捷的查询出日期是星期几,可以将上述功能封装成一个函数,在调用的时候提供一个日期参数,就能得到期望的结果了,下面是函数的实现:

“`SQL

CREATE FUNCTION GET_DAY_BY_DATE (

P_DATE IN DATE

) RETURN VARCHAR2

IS

V_DAY VARCHAR2(10);

BEGIN

SELECT TO_CHAR(TO_DATE(P_DATE, ‘YYYY-MM-DD’) – TO_DATE(TO_CHAR(P_DATE, ‘YYYY-MM’) || ‘-01’, ‘YYYY-MM-DD’) + (TO_NUMBER(TO_CHAR(TO_DATE(TO_CHAR(P_DATE, ‘YYYY-MM’) || ‘-01’, ‘YYYY-MM-DD’), ‘DAY’)) – 1), ‘DY’)

INTO V_DAY

FROM DUAL;

RETURN V_DAY;

END;


每当有需要查询日期是星期几的需求,可以使用上述函数调用,使用示例:

```SQL
SELECT GET_DAY_BY_DATE (TO_DATE('2020-7-14', 'YYYY-MM-DD')) AS RESULT
FROM DUAL;

最后,以上就是如何利用 Oracle 查询判断日期是星期几的具体操作步骤,相信通过上面的介绍对大家已经有所帮助,期待大家在实际的项目开发中能够熟练运用,灵活利用。


数据运维技术 » 利用 Oracle 查询判断日期是星期几(oracle判断周几)