Как я могу исправить неправильный формат даты в SQLite - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю над приложением, в котором я использую SQLite для хранения данных. Я создал столбец Дата. Поскольку я новичок, я допустил ошибку, введя дату в виде% m /% d /% Y (например, 20.02.2020). Теперь у меня возникла проблема при выводе строк между выбранными датами. Я пытался использовать этот код: SELECT * FROM Table WHERE Date BETWEEN strftime('%m/%d/%Y','2/5/2019') AND strftime('%m/%d/%Y','2/20/2020') Но это не работает.

Пример таблицы:

ID | Date
01 | 9/2/2019
02 | 2/20/2020

Заранее благодарю за помощь.

1 Ответ

1 голос
/ 20 февраля 2020

Обновите ваши даты до единственного действительного формата даты SQLite, который YYYY-MM-DD:

update tablename
set date = substr(date, -4) || '-' || 
           substr('00' || (date + 0), -2, 2) || '-' ||
           substr('00' || (substr(date, instr(date, '/') + 1) + 0), -2, 2);

См. demo . Результаты:

| ID  | Date       |
| --- | ---------- |
| 1   | 2019-09-02 |
| 2   | 2020-02-20 |

Теперь вы можете установить такие условия, как:

Date BETWEEN '2019-02-05' AND '2020-02-20'

Если вы сделаете это изменение, вы можете использовать функцию strftime() в select операторах для возврата даты в любом формате, который вы хотите:

SELECT strftime('%m/%d/%Y', date) date FROM Table

Если вы не измените формат столбца даты, то каждый раз, когда вам нужно сравнить даты, вам придется преобразовывать значение в выражение, используемое в UPDATE заявление, и это худший выбор, который вы можете сделать.

...