如何修复 SQLite 中错误的日期格式

How can I fix wrong date format in SQLite

我正在开发使用 SQLite 存储数据的应用程序。 我创建了日期列。由于我是初学者,所以我将日期输入为 %m/%d/%Y 时犯了一个错误(例如:2/20/2020) 现在我在删除所选日期之间的行时遇到了问题。 我尝试使用此代码: SELECT * FROM Table WHERE Date BETWEEN strftime('%m/%d/%Y','2/5/2019') AND strftime('%m/%d/%Y','2/20/2020') 但那是行不通的。

示例table:

ID | Date
01 | 9/2/2019
02 | 2/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'

如果您进行此更改,则可以在 select 语句中使用函数 strftime() 以 return 您想要的任何格式的日期:

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

如果不更改日期列的格式,则每次需要比较日期时,都必须使用 UPDATE 语句中使用的表达式转换值,这是最糟糕的选择你可以做的。