如何修复 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
语句中使用的表达式转换值,这是最糟糕的选择你可以做的。
我正在开发使用 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
语句中使用的表达式转换值,这是最糟糕的选择你可以做的。