sql >> Databáze >  >> RDS >> Oracle

Oracle:Dny mezi dvěma daty a Vyloučit pracovní dny, jak zacházet se zápornými čísly

Převzato z mé odpovědi zde:

Získejte počet dní mezi pondělími obou týdnů (pomocí TRUNC( datevalue, 'IW' ) jako NLS_LANGUAGE nezávislá metoda zjištění pondělí v týdnu), poté přidejte den v týdnu (pondělí =1, úterý =2 atd., maximálně do 5, aby se ignorovaly víkendy) pro datum ukončení a odečtěte den v týdnu pro datum zahájení. Takhle:

SELECT ( TRUNC( end_date, 'IW' ) - TRUNC( start_date, 'IW' ) ) * 5 / 7
       + LEAST( end_date - TRUNC( end_date, 'IW' ) + 1, 5 )
       - LEAST( start_date - TRUNC( start_date, 'IW' ) + 1, 5 )
          AS WeekDaysDifference
FROM   your_table


  1. Prohlášení Oracle

  2. R12.2 Cyklus oprav online Shrnutí

  3. Jak uložit znak Emoji v databázi MySQL

  4. vytvořte dynamický dotaz SQL pomocí knihovny psycopg2 python a pomocí dobrých nástrojů pro typ konverze