0

我有一个在数据库中输入的客户信息列表。我想提取仅在周末输入的数据,我想知道是否有办法做到这一点?

到目前为止,这是我的查询,但是,它给了我从 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

谢谢你

4

3 回答 3

2

我没有你的表,所以我将在 Scott 的 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');
于 2021-07-02T20:25:32.903 回答
2

您可以使用 ISO 周作为起点,这与文化无关:

select *
from your_table
where trunc(created_date) - trunc(created_date, 'IW') in (5,6)

ISO 周从星期一开始。

于 2021-07-02T21:13:43.360 回答
1
select to_char(sysdate, 'DAY') full_name,  
       to_char(sysdate, 'DY') abbreviation,  
       to_char(sysdate, 'D') day_of_week  
from   dual
于 2021-07-03T12:18:08.583 回答