sql >> Database teknologi >  >> RDS >> Oracle

Sådan bestemmes uge af et kvartal i Oracle-forespørgsel

Dette vil få ugen (søndag - lørdag) i kvartalet:

SELECT TO_CHAR( SYSDATE, 'YYYY-"Q"Q-"W"' )
     || ( 7 + TRUNC( SYSDATE + 1, 'IW' ) - TRUNC( TRUNC( SYSDATE, 'Q' ) + 1, 'IW' ) ) / 7;
         AS "Current Time"
FROM DUAL

Forklaring :

  • Du kan finde søndagen, som enten var på eller lige før en given dato ved at bruge NEXT_DAY( TRUNC(dato_value), 'SUNDAY' ) - 7 (som er afhængig af NLS_TERRITORY indstilling) eller TRUNC(dato_værdi + 1, 'IW' ) - 1 (som er kortere og ikke afhængig af nogen indstillinger).
  • TRUNC(dato_værdi, 'Q' ) angiver datoen for den første dag i det kvartal, der indeholder værdien dato (dvs. enten 1. januar, 1. april, 1. juli eller 1. oktober).
  • Sættes de to sammen, er søndagen på eller lige før den første dag i kvartalet givet af TRUNC( TRUNC( dato_værdi, 'Q' ) + 1, 'IW' ) - 1
  • Derfor er antallet af dage mellem søndagen på-eller-lige før kvartalets start og søndagen på-eller-lige før en given dato:( TRUNC(dato_value + 1, ' IW' ) - 1 ) - ( TRUNC( TRUNC( dato_værdi, 'Q' ) + 1, 'IW' ) - 1 ) - hvilket kan forenkles ved at annullere -1 vilkår.
  • Antallet af ugers forskel er kun det tal divideret med 7 (men giver en 0-indekseret værdi, og du ønsker, at ugenummeret for kvartalet skal være 1-indekseret; enten tilføjer du 1 uge til resultatet eller før laver opdelingen, tilføj 7 dage).



  1. Hvordan administrerer du databaser i udvikling, test og produktion?

  2. Opret forbindelse til en masse databaser samtidigt i Laravel 5.2

  3. Sorter liste over tupler i betragtning af lokalitet (svensk bestilling)

  4. Deadlock-puslespil:Offer ejer ikke nogen ressource, bruges til at dræbe for at løse dødvande