Как запросить даты, используя sqlite между - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь запросить диапазон между датами, но

Я попытался использовать тип данных даты, сохранить значения в столбце даты в виде строки, а также использовать функцию даты, но не получил желаемых результатов

CREATE TABLE PvcTable (
    date        TEXT NOT NULL,
    Wardname    TEXT NOT NULL,
    Puname      TEXT NOT NULL,
    PvcReceived TEXT,
    PRIMARY KEY (
        date,
        Wardname,
        Puname
    )
);

ожидаемый результат, когда я запрашиваю, скажем,

SELECT *  from pvctable 
where date between '2019-1-1' and '2019-12-1' 
order by WARDNAME

Я должен получить все записи в период с января по декабрь 2019 года, но вместо этого я получаю this.only 3 записи возвращают.

date     Wardname       Puname                    PvcReceived
2019-10  01Alagarno     010KANGARWAPRISCHII         58
2019-11  02Baga         001MILEFOUR                 58
2019-12  02Baga         002DARBASHATA               58

1 Ответ

0 голосов
/ 08 октября 2019

Важно убедиться, что даты в таблице имеют правильный формат YYYY-MM-DD, который сопоставим. Из приведенных вами образцов данных я вижу, что в датах нет части DD, что хорошо, если вам это не нужно, поскольку YYYY-MM также сопоставимо. Но если нет DD части, то в вашем запросе не следует сравнивать столбец даты с датами, содержащими эту часть, но с датами в формате YYYY-MM. Поэтому перейдите к этому:

SELECT *  from pvctable 
where date between '2019-01' and '2019-12' 
order by WARDNAME

См. Демоверсию . Результаты:

| date    | Wardname   | Puname              | PvcReceived |
| ------- | ---------- | ------------------- | ----------- |
| 2019-01 | 01Alagarno | 001ALAGARNOPRISCH   | 58          |
| 2019-10 | 01Alagarno | 010KANGARWAPRISCHII | 58          |
| 2019-11 | 02Baga     | 001MILEFOUR         | 58          |
| 2019-12 | 02Baga     | 002DARBASHATA       | 58          |
...