SQL - Получить последний день каждого месяца текущего года - SQLITE3 - PullRequest
0 голосов
/ 04 июня 2018

Я пробежался по SO и нашел много полезных запросов для этого, но не совсем то, что я хочу, или даже они говорят, что это ответ, но он совсем не работает для sqlite3.

Итак, поехали.Я хочу вернуть все данные в последний день каждого месяца текущего года.Как показано ниже: (просто игнорируйте время, просто хотел добавить его, чтобы посмотреть, как на самом деле выглядит мое поле)

Name | Date_Added
=================================
Bob  | 2018-01-31 05:23:06.021421
Bob  | 2018-02-28 14:16:03.076021
Bob  | 2018-03-31 13:16:03.076021
Bob  | 2018-04-30 13:16:03.076021
Bob  | 2018-05-31 13:16:03.076021
Bob  | 2018-06-04 13:16:03.076021
Mary | 2018-01-31 13:16:03.076021
Mary | 2018-02-28 13:16:03.076021
Mary | 2018-03-31 13:16:03.076021
Mary | 2018-04-30 13:16:03.076021
Mary | 2018-05-31 13:16:03.076021
Mary | 2018-06-04 13:16:03.076021

Я пробовал что-то вроде:

SELECT * FROM tableName WHERE date('now','start of month','-1 month','-1 day') ORDER BY "Name"

Но похожечто он по-прежнему отправляет данные не только в последний день

Любая помощь или направление будет высоко ценится!

Ответы [ 2 ]

0 голосов
/ 04 июня 2018
SELECT * FROM tableName WHERE
 "Date_added" BETWEEN date('2018-12-30','start of month','-10 month','-1 day') AND date('2018-12-30','start of month','-10 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-9 month','-1 day') AND date('2018-12-30','start of month','-9 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-8 month','-1 day') AND date('2018-12-30','start of month','-8 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-7 month','-1 day') AND date('2018-12-30','start of month','-7 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-6 month','-1 day') AND date('2018-12-30','start of month','-6 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-5 month','-1 day') AND date('2018-12-30','start of month','-5 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-4 month','-1 day') AND date('2018-12-30','start of month','-4 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-3 month','-1 day') AND date('2018-12-30','start of month','-3 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-2 month','-1 day') AND date('2018-12-30','start of month','-2 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','-1 month','-1 day') AND date('2018-12-30','start of month','-1 month','0 day') OR 
 "Date_added" BETWEEN date('2018-12-30','start of month','0 month','-1 day') AND date('2018-12-30','start of month','0 month','0 day') 
ORDER BY "Name"

Довольно нудно, но у меня работает!

0 голосов
/ 04 июня 2018

Если дата является последним днем ​​месяца, то месяц будет другим, если вы добавите один день:

SELECT * FROM tableName 
    WHERE 
        strftime("%m", Date_Added) != strftime("%m", Date_Added, "+1 day")
            AND 
        strftime("%Y", Date_Added) = strftime("%Y", "now")
ORDER BY "Name";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...