Sqlite 如何搜索特定日期的记录

Sqlite 如何搜索特定日期的记录,sqlite,android-sqlite,Sqlite,Android Sqlite,我需要进行查询(在sqlite3上)并获取特定日期的所有记录,例如2018年2月13日 在数据库中,我将其保存到属性“annotated”作为datetime 如果我进行查询,它将以毫秒为单位显示。例如“1519321923630” 我试过这样的东西,但没用。它不会给我带来结果,但如果真的有 "SELECT * from coupons where annotated = '13022018' "; 您需要使用SQLitedate函数来获取相关日期,如下所示: SELECT * FROM co

我需要进行查询(在sqlite3上)并获取特定日期的所有记录,例如2018年2月13日 在数据库中,我将其保存到属性“annotated”作为datetime 如果我进行查询,它将以毫秒为单位显示。例如“1519321923630” 我试过这样的东西,但没用。它不会给我带来结果,但如果真的有

"SELECT * from coupons where annotated = '13022018' ";

您需要使用SQLite
date
函数来获取相关日期,如下所示:

SELECT * FROM coupons WHERE date(annotated, 'unixepoch') = '2018-02-13';
此查询假定数据实际上存储为Unix刻度,或Unix纪元的整秒数

如果您的数据实际上是以毫秒为单位存储的,假设相同的开始时间,那么您应该使用

SELECT * FROM coupons WHERE date((annotated/1000), 'unixepoch') = '2018-02-13';
因为SQLite不支持毫秒分辨率。如果数据是从任意开始时间算起的毫秒数,那么在SQLite将其识别为有效日期/时间之前,您必须找到某种方法对其进行规范化


编辑--忘记包含“unixepoch”修饰符字符串。

毫秒不是其中之一。@CL:编辑以澄清。我怀疑OP的数据实际上是以Unix记号表示的,但我想可能是以毫秒表示的。此查询不适用于问题中的值
1519321923630
。@CL.不,不适用。特定值与指定的日期不对应(以滴答或毫秒表示)。正如我所说,如果数据实际上是从任意起点经过的毫秒数,则必须对其进行规范化。这是一个完全有效的毫秒值(2018-02-22 17:52:03)。但你像朱利安·戴斯那样处理它。