sql >> Databáze >  >> RDS >> SQLite

Vraťte první pondělí každého měsíce v SQLite

Můžeme použít DATE() SQLite funkce vrátit první pondělí každého měsíce pro daný rok na základě námi poskytnutého data.

Ale není to omezeno na pondělí. Můžeme také získat první úterý, středu, čtvrtek, pátek atd. každého měsíce.

Příklad

Alternativně můžeme použít kód jako je následující k vrácení prvního pondělí každého měsíce v průběhu roku:

SELECT DATE('2025-10-20', 'začátek roku', 'pracovní den 1') JAKO "Leden", DATE('2025-10-20', 'začátek roku', ' +1 měsíc', 'pracovní den 1') JAKO "Únor", DATE('2025-10-20', 'začátek roku', '+2 měsíce', 'pracovní den 1') JAKO "březen", DATE(' 2025-10-20', 'začátek roku', '+3 měsíce', 'pracovní den 1') JAKO "Apr", DATE('2025-10-20', 'začátek roku', '+4 měsíce' , 'pracovní den 1') JAKO "květen", DATE('2025-10-20', 'začátek roku', '+5 měsíců', 'pracovní den 1') JAKO "červen", DATE('2025-10- 20', 'začátek roku', '+6 měsíců', 'pracovní den 1') JAKO "Červec", DATE('2025-10-20', 'začátek roku', '+7 měsíců', 'pracovní den 1' ') JAKO "Aug", DATE('2025-10-20', 'začátek roku', '+8 měsíců', 'pracovní den 1') AS "Sep", DATE('2025-10-20', ' začátek roku', '+9 měsíců', 'pracovní den 1') AS "říjen", DATE('2025-10-20', 'začátek roku', '+10 měsíců', 'pracovní den 1') AS " Nov", DATE('2025-10-20', 'začátek roku', '+11 měsíců', 'pracovní den 1') AS "Prosinec"; 

Výsledek:

leden únor březen dub květen červen červenec srpen září říjen listopad prosinec ---------- ---------- ---------- ----- ----- ---------- ---------- ---------- ---------- ----- ----- ---------- ---------- ----------2025-01-06 2025-02-03 2025-03-03 2025-04-07 2025-05-05 2025-06-02 2025-07-07 2025-08-04 2025-09-01 2025-10-06 2025-11-03 2025-pre12- 

Zde nazýváme DATE() fungovat dvanáctkrát. Pokaždé používáme stejné datum a většina argumentů je stejná. Jediné, co se mění, je, kolik přidáme do začátku roku.

Používáme začátek roku vrátit datum zpět na první den v roce. Poté použijeme další modifikátory, abychom toto datum odpovídajícím způsobem upravili.

Když k datu nepřidáme žádné měsíce, vrátíme první pondělí v lednu. Přidávání +1 měsíc vrací první pondělí v únoru atd.

1. den v týdnu modifikátor posouvá datum dopředu na další pondělí. Neděle je 0, pondělí je 1, úterý je 2 a tak dále, takže pokud bychom chtěli například úterý, použili bychom pracovní den 2 místo toho.

Použití aktuálního data

Následující příklad používá aktuální datum:

SELECT DATE('nyní') AS "Nyní", DATE('nyní', 'začátek roku', 'pracovní den 1') JAKO "Leden", DATE('nyní', 'začátek roku ', '+1 měsíc', 'pracovní den 1') JAKO "Únor", DATE('nyní', 'začátek roku', '+2 měsíce', 'pracovní den 1') JAKO "březen", DATE('nyní ', 'začátek roku', '+3 měsíce', 'pracovní den 1') JAKO "Duben", DATE('nyní', 'začátek roku', '+4 měsíce', 'pracovní den 1') JAKO "květen ", DATE('nyní', 'začátek roku', '+5 měsíců', 'pracovní den 1') JAKO "Červen", DATE('nyní', 'začátek roku', '+6 měsíců', 'pracovní den 1') JAKO "Červenec", DATE('nyní', 'začátek roku', '+7 měsíců', 'pracovní den 1') JAKO "srpen", DATE('nyní', 'začátek roku', '+ 8 měsíců', 'pracovní den 1') JAKO "Zář", DATE('nyní', 'začátek roku', '+9 měsíců', 'pracovní den 1') JAKO "říjen", DATE('nyní', 'začátek roku', '+10 měsíců', 'pracovní den 1') JAKO "Nov", DATE('nyní', 'začátek roku', '+11 měsíců', 'pracovní den 1') JAKO "Prosinec"; 

Výsledek:

Nyní led únor březen dub květen červen červenec srpen září říjen listopad prosinec ---------- ---------- --------- ---- ------ ---------- ---------- ---------- ---------- ---- ------ ---------- ---------- ---------- -----------2022-03- 10 2022-01-03 2022-02-07 2022-03-07 2022-04-04 2022-05-02 2022-06-06 2022-07-04 2022-08-01 2022-08-01 2022-08-01 2022-05-02 03 2022-11-07 2022-12-05

  1. Java:Jak vložit CLOB do databáze Oracle

  2. Zřetězit/sloučit hodnoty pole během seskupování/agregace

  3. Jak MONTH() funguje v MariaDB

  4. Vyrovnávání zatížení databáze:Distribuované vs centralizované nastavení