带正斜杠的SQLite类SELECT查询

带正斜杠的SQLite类SELECT查询,sqlite,Sqlite,在我的数据库中,我将时间戳存储在一个TIMESTAMP字段中,表结构是:(此时很难将其更改为int来存储unix历元之类的内容) 现在我需要选择开始日期在某个月的行。我想我可以做一些事情,比如: SELECT * FROM timer WHERE start LIKE "%month/%/year%" SELECT * FROM timer WHERE start LIKE "%8%" 但它不起作用。但如果我只是做一些类似的事情: SELECT * FROM timer WHERE star

在我的数据库中,我将时间戳存储在一个TIMESTAMP字段中,表结构是:(此时很难将其更改为int来存储unix历元之类的内容)

现在我需要选择开始日期在某个月的行。我想我可以做一些事情,比如:

SELECT * FROM timer WHERE start LIKE "%month/%/year%"
SELECT * FROM timer WHERE start LIKE "%8%"
但它不起作用。但如果我只是做一些类似的事情:

SELECT * FROM timer WHERE start LIKE "%month/%/year%"
SELECT * FROM timer WHERE start LIKE "%8%"
它运行并选择开始日期为8月的所有行(以及时间为8的行)

我试图将问题缩小到:

SELECT * FROM timer WHERE start LIKE "%/%"
并发现如果like字符串包含正斜杠
/
,则查询将完全不返回任何内容。我试着逃过刀口,但没有改变任何事情

当我包含正斜杠时,为什么我的查询不起作用

以下是表格中的一些示例数据:

id  topic     desc        project  start                   end                     user
1    Topic 1   A Desc.     1        8/12/2016 11:34:09 PM   8/12/2016 11:34:15 PM   1
2    Topic 2   A 2ndDesc.  1        8/13/2016 12:55:44 AM   8/13/2016 12:55:49 AM   1
编辑:

根据要求,这里有一个插入:

INSERT INTO timer (`topic`, `project`, `desc`, `start`, `end`, `user`) VALUES ('My Topic', '1', 'This is a Desc', '2016-08-15 10:03:41', '2016-08-16 12:03:41', '1')

SQLite的
TIMESTAMP
类型将日期/时间存储为字符串(SQLite中有):

2016-08-14 21:00:42
它不包含斜杠。在显示数据时,数据可能正在重新格式化

SQLite不约束数据类型,因此可能插入非ISO8601字符串。它取决于SQLite库和
INSERT
语句。但是,您的
start
列被定义为
TIMESTAMP DEFAULT\u CURRENT TIMESTAMP
,因此
start
的默认值将是ISO8601字符串。如果时间格式不一致,则无法查询数据

ISO8601格式是可排序的,因此可以使要执行的
SELECT
更高效:

SELECT * FROM timer WHERE start >= :from AND start < :to

你能提供一个插入示例吗?您使用的是什么客户机?@cartant我不明白插入示例与问题有何关联?对于我使用的客户端SQLite Administrator:),这很重要,因为您可以将任何喜欢的内容放入SQLite中的列中,除非您编写了自己的触发器来强制执行类型约束。不管怎样,我已经回答了这个问题。我修正了答案中的一系列错误——这里是咖啡前的时间。有时,使用另一个工具查看数据库会很有用。我使用的是。@cartant啊,我明白了,我在主帖中添加了一个插入,现在我在看你的回答谢谢你解释时间戳类型,我知道SQLite没有真正的时间戳类型,因为我在任何地方都找不到它的页面,我很好奇它是如何工作的:)我在SQLiteSpy中打开了同一个数据库,果然,日期分隔符显示为破折号。我用破折号而不是斜杠重新运行了我的查询,并且年和月的顺序正确,它正常工作。感谢您选择的例子,它的作品完美!我以前不需要在SQL数据库中处理太多的日期和时间,所以这对我来说是一次学习经历:)