Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复SQLite中错误的日期格式_Sqlite_Strftime - Fatal编程技术网

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

如何修复SQLite中错误的日期格式,sqlite,strftime,Sqlite,Strftime,我正在开发一个使用SQLite存储数据的应用程序。 我创建了Date列。因为我是初学者,所以我犯了一个错误,将日期输入为%m/%d/%Y(例如:2/20/2020) 现在,在选定日期之间取出行时出现问题。 我尝试使用以下代码: 从表格中选择*日期介于标准时间('%m/%d/%Y','2019年2月5日')和标准时间('%m/%d/%Y','2020年2月20日')之间。 但这不起作用 示例表: ID | Date 01 | 9/2/2019 02 | 2/20/2020 提前感谢您的帮助 将日

我正在开发一个使用SQLite存储数据的应用程序。 我创建了Date列。因为我是初学者,所以我犯了一个错误,将日期输入为%m/%d/%Y(例如:2/20/2020) 现在,在选定日期之间取出行时出现问题。 我尝试使用以下代码:
从表格中选择*日期介于标准时间('%m/%d/%Y','2019年2月5日')和标准时间('%m/%d/%Y','2020年2月20日')之间。
但这不起作用

示例表:

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);
请参阅。
结果:

现在,您可以设置如下条件:

Date BETWEEN '2019-02-05' AND '2020-02-20'
如果执行此更改,则可以使用
select
语句中的函数
strftime()
以所需的任何格式返回日期:

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

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

如果您想以任何方式(除相等外)比较日期,请使用中列出的日期格式之一。省去所有麻烦,并将日期列更新为YYYY-MM-DD。如何?使用更新表时,设置Date=substr(Date,6)| |“-“| | substr(Date,3,1)|”-“| | substr(Date,1,1);然后2020年2月20日变为2020-20-2/但2019年9月2日变为019-9/-2/。。工作不正常
SELECT strftime('%m/%d/%Y', date) date FROM Table