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

Върнете първия понеделник от всеки месец в SQLite

Можем да използваме DATE() на SQLite функция за връщане на първия понеделник от всеки месец за дадена година въз основа на датата, която предоставяме.

Но не се ограничава до понеделник. Можем също да получим първия вторник, сряда, четвъртък, петък и т.н. от всеки месец.

Пример

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

ИЗБЕРЕТЕ ДАТА('2025-10-20', 'начало на годината', 'делник 1') КАТО "Януари", DATE('2025-10-20', 'начало на годината', ' +1 месец', 'делен ден 1') КАТО "февруари", DATE('2025-10-20', 'начало на годината', '+2 месеца', 'делен ден 1') КАТО "март", DATE(' 2025-10-20', 'начало на годината', '+3 месеца', 'делник 1') КАТО "апр", ДАТА('2025-10-20', 'начало на годината', '+4 месеца' , 'делен ден 1') КАТО "май", DATE('2025-10-20', 'начало на годината', '+5 месеца', 'делник 1') КАТО "юни", DATE('2025-10- 20', 'начало на годината', '+6 месеца', 'делничен ден 1') КАТО "Юли", ДАТА('2025-10-20', 'начало на годината', '+7 месеца', 'делничен ден 1 ') КАТО "август", DATE('2025-10-20', 'начало на годината', '+8 месеца', 'делник 1') КАТО "септември", DATE('2025-10-20', ' начало на годината“, „+9 месеца“, „Ден от седмицата 1“) КАТО „октомври“, ДАТА('2025-10-20', 'начало на годината', '+10 месеца', 'делен ден 1') AS " Ноември", DATE('2025-10-20', 'начало на годината', '+11 месеца', 'делник 1') КАТО "Дек"; 

Резултат:

Ян Фев Мар Апр Май Юн Юл Авг Сеп Окт Ноем Дек ---------- ---------- ---------- ----- ----- ---------- ---------- ---------- ---------- ----- ----- ---------- ---------- ----------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-12 

Тук ние наричаме DATE() функция дванадесет пъти. Всеки път използваме една и съща дата и повечето аргументи са едни и същи. Единственото нещо, което се променя, е колко добавяме към началото на годината.

Използваме начало на годината да върнете датата обратно към първия ден на годината. След това използваме допълнителни модификатори, за да променим съответно тази дата.

Когато не добавим месеци към датата, връщаме първия понеделник на януари. Добавяне на +1 месец връща първия понеделник на февруари и т.н.

Ден от седмицата 1 модификаторът премества датата напред към следващия понеделник. Неделя е 0, понеделник е 1, вторник е 2 и т.н., така че ако искаме вторник например, ще използваме седмичен ден 2 вместо това.

Използване на текущата дата

Следният пример използва текущата дата:

ИЗБЕРЕТЕ ДАТА('сега') КАТО "Сега", DATE('сега', 'начало на годината', 'делен ден 1') КАТО "Януари", DATE('сега', 'начало на годината ', '+1 месец', 'делен ден 1') КАТО "февруари", DATE('сега', 'начало на годината', '+2 месеца', 'делен ден 1') КАТО "март", DATE('сега ', 'начало на годината', '+3 месеца', 'делничен ден 1') КАТО "апр", DATE('сега', 'начало на годината', '+4 месеца', 'делничен ден 1') AS "май ", DATE('сега', 'начало на годината', '+5 месеца', 'делник 1') КАТО "юни", DATE('сега', 'начало на годината', '+6 месеца', 'делничен ден 1') КАТО "Юли", DATE('сега', 'начало на годината', '+7 месеца', 'делник 1') КАТО "август", DATE('сега', 'начало на годината', '+ 8 месеца“, „делен ден 1“) КАТО „септ“, DATE(„сега“, „начало на годината“, „+9 месеца“, „делен ден 1“) КАТО „октомври“, DATE(„сега“, „начало“) на годината“, „+10 месеца“, „делен ден 1“) КАТО „ноември“, DATE(„сега“, „начало на годината“, „+11 месеца“, „делен ден 1“) КАТО „декември“; 

Резултат:

Сега януари Фев Мар Апр Май Юн Юл Авг Сеп Окт Ноем Дек ---------- ---------- ---------- ---- ------ ---------- ---------- ---------- ---------- ---- ------ ---------- ---------- ---------- ----------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-01-2020-2022 03 2022-11-07 2022-12-05

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оператор

  2. SQLite JSON_ARRAY_LENGTH()

  3. Базата данни няма да се премахне, когато деинсталирате приложението за Android

  4. <expr> очаквано, разбрахте ли '?'

  5. Android SQlite не актуализира данните