Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL работна седмица в Oracle

За вашите изисквания трябва да използвате комбинация от IW и WW формат. Можете да ги комбинирате с помощта на КАЛЪФ израз.

Ако искате да генерирате списък с дати за цялата година, можете да използвате генератор на редове метод.

SQL> WITH sample_data AS(
  2  SELECT DATE '2015-12-28'    + LEVEL -1 dt FROM dual
  3  CONNECT BY LEVEL <= 15
  4  )
  5  -- end of sample_data mimicking real table
  6  SELECT dt,
  7    TO_CHAR(dt, 'DY') DAY,
  8    NVL(
  9    CASE
 10      WHEN dt < DATE '2016-01-01'
 11      THEN TO_CHAR(dt, 'IW')
 12      WHEN dt >= next_day(TRUNC(DATE '2016-01-01', 'YYYY') - 1, 'Monday')
 13      THEN TO_CHAR(dt                                      +7, 'IW')
 14    END, '01') week_number
 15  FROM sample_data;

DT         DAY WEEK_NUMBER
---------- --- -----------
2015-12-28 MON 53
2015-12-29 TUE 53
2015-12-30 WED 53
2015-12-31 THU 53
2016-01-01 FRI 01
2016-01-02 SAT 01
2016-01-03 SUN 01
2016-01-04 MON 02
2016-01-05 TUE 02
2016-01-06 WED 02
2016-01-07 THU 02
2016-01-08 FRI 02
2016-01-09 SAT 02
2016-01-10 SUN 02
2016-01-11 MON 03

15 rows selected.

ЗАБЕЛЕЖКА:

Стойността 15 за генериране на 15 реда и датите са твърдо кодирани по-горе само за демонстрация с помощта на клаузата WITH, тъй като OP не предостави тестовия случай с изрази за създаване и вмъкване. В действителност трябва да използвате имената на вашите таблици и колони.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между изгледи и материализирани изгледи в Oracle?

  2. Какъв е ефективен начин за проследяване, идентифициране и докладване на всяко „съобщение за грешка“, изведено от вашето приложение?

  3. Преобразувайте разделен със запетая низ в масив в PL/SQL

  4. Как да извикате съхранена процедура в пакет оракул с Entity Framework?

  5. Как да използвам Hibernate Session.doWork(...) за точки за запис/вложени транзакции?