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_Date_Select_Time - Fatal编程技术网

SQLite中的日期函数不选择数据库中的行

SQLite中的日期函数不选择数据库中的行,sqlite,date,select,time,Sqlite,Date,Select,Time,我在表tbl中有一列c,其中包含以下值 Tue, 15 Nov 2011 14:21:32 GMT Tue, 15 Nov 2011 12:59:21 GMT Tue, 15 Nov 2011 12:15:48 GMT Tue, 15 Nov 2011 12:10:33 GMT Tue, 15 Nov 2011 11:12:09 GMT Tue, 15 Nov 2011 11:09:14 GMT Tue, 15 Nov 2011 10:38:01 GMT Tue, 15 Nov 2011 10:

我在表
tbl
中有一列
c
,其中包含以下值

Tue, 15 Nov 2011 14:21:32 GMT
Tue, 15 Nov 2011 12:59:21 GMT
Tue, 15 Nov 2011 12:15:48 GMT
Tue, 15 Nov 2011 12:10:33 GMT
Tue, 15 Nov 2011 11:12:09 GMT
Tue, 15 Nov 2011 11:09:14 GMT
Tue, 15 Nov 2011 10:38:01 GMT
Tue, 15 Nov 2011 10:36:33 GMT
Tue, 15 Nov 2011 10:09:21 GMT
Tue, 15 Nov 2011 09:23:01 GMT
Tue, 15 Nov 2011 08:24:39 GMT
Mon, 14 Nov 2011 22:44:53 GMT
Mon, 14 Nov 2011 21:03:28 GMT
Mon, 14 Nov 2011 20:12:11 GMT
Mon, 14 Nov 2011 19:08:34 GMT
Mon, 14 Nov 2011 18:40:05 GMT
Mon, 14 Nov 2011 18:07:00 GMT
Mon, 14 Nov 2011 18:04:00 GMT
Mon, 14 Nov 2011 17:37:45 GMT
这些值取自命令:

从tbl中选择c

当我跑步时:

从tbl中选择count(*),其中c

结果是
0

这里怎么了


谢谢

首先,在将日期字符串添加到数据库之前,必须对其进行一些操作。基本上,它应该只包含:年、月、日、时、分、秒、毫秒(可选)。所有数据都是数字形式,里面不应该有字符串

我创建了一个小表格:

> sqlite3 ':memory:'
sqlite> CREATE TABLE tbl (c text);
sqlite> INSERT INTO tbl (c) VALUES ('2011-11-15 14:21:32');
sqlite> INSERT INTO tbl (c) VALUES ('2011-11-15 12:59:21');
sqlite> INSERT INTO tbl (c) VALUES ('2011-11-15 12:15:48');
sqlite> INSERT INTO tbl (c) VALUES ('2011-11-15 12:10:33');
sqlite> INSERT INTO tbl (c) VALUES ('2011-11-15 11:12:09');
sqlite> INSERT INTO tbl (c) VALUES ('2011-12-15 11:12:09');
sqlite>从tbl中选择strftime(“%Y-%m-%d%H:%m:%S',c),其中strftime(“%Y-%m-%d%H:%m:%S',c)

给我很好的结果:

2011-11-15 14:21:32
2011-11-15 12:59:21
2011-11-15 12:15:48
2011-11-15 12:10:33
2011-11-15 11:12:09

数据库中存储的是常规字符串,而不是SQLite日期时间字符串

要将“内容到文本”列识别为日期时间,它必须以
YYYY-MM-DD HH:MM:SS.SSS
格式存储


要从现有数据中获得所需的结果,必须使用字符串比较,执行
时,该列中的值是字符串还是日期?能否重新格式化c列中的字符串以更正日期函数的字符串?我可以选择所有格式不正确的字符串吗?看起来所有字符串都不是日期格式的,但是您可以通过确保字符串的第一个字符不是数字来选择。您可能会编写一条UPDATE语句来重新格式化日期。你需要的子字符串都很简单,除了你需要一个CASE语句来翻译1月->1日,2月->2日,等等。