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日,等等。