我在数据库中输入了一个客户端信息列表。我想提取只在周末输入的数据,我想知道是否有办法做到这一点?
到目前为止,这是我的查询,然而,它给了我从6月1日到6月27日输入的所有数据,当时我只想在周末输入数据。如果有人能帮我修改查询以提取周末数据,我将非常感谢
SELECT CLIENT_ID, CREATED_DATE
FROM DBA_CLIENTLIST
WHERE CREATED_DATE >= TO_DATE('2021-06-01', 'yyyy-mm-dd')
AND CREATED_DATE < TRUNC(SYSDATE, 'IW')-2
谢谢
我没有你的表格,所以我会在斯科特的EMP上演示。
SQL> select empno, ename, to_char(hiredate, 'dd.mm.yyyy, dy') hiredate
2 from emp
3 where to_char(hiredate, 'dy', 'nls_date_language = english') in ('sat', 'sun');
EMPNO ENAME HIREDATE
---------- ---------- ------------------------
7521 WARD 22.02.1981, sun
7934 MILLER 23.01.1982, sat
SQL>
因此,从字面上提取日期值分为sat(urday(和sun(day(的行。
您的查询将是
select client_id, created_date
from dba_clientlist
where to_char(created_date, 'dy', 'nls_date_language = english') in ('sat', 'sun');
您可以使用ISO周作为起点,它与区域性无关:
select *
from your_table
where trunc(created_date) - trunc(created_date, 'IW') in (5,6)
ISO周从周一开始。
select to_char(sysdate, 'DAY') full_name,
to_char(sysdate, 'DY') abbreviation,
to_char(sysdate, 'D') day_of_week
from dual