如何通过java在sqlite中插入日期

2022-09-02 12:05:53

我想创建一个数据库,可以在其中保存日期(SQLite)。现在首先要问的是,声明日期列的正确语法是什么。我想知道的第二个是如何在那之后插入日期。我想知道的第三件事是如何在其中选择日期,例如选择包含01/05/2010和05/06/2010之间日期的所有行。

谢谢


答案 1

现在首先要问的是,声明日期列的正确语法是什么。

SQLite 数据类型文档:

1.2 日期和时间数据类型

SQLite 没有为存储日期和/或时间预留存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEQUE值:

  • 文本作为 ISO8601 字符串 (“YYYY-MM-DD HH:MM:SS.SSS”)。
  • REAL作为儒略日数字,自公元前4714年11月24日在格林威治根据公历的十一月24日中午以来的天数。
  • INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。

应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间功能在格式之间自由转换。

任您挑选。我会选择TEXT或INTEQUE。整数会更快。如果您需要存储1970年以后的日期(例如出生日期等),那么我会选择TEXT。如果您只需要存储现在和将来的创建时间/修改时间等,那么请选择INTEGER。

我想知道的第二个是如何在那之后插入日期。

分别使用 PreparedStatement#setString()#setLong()。

我想知道的第三件事是如何在其中选择日期,例如选择包含01/05/2010和05/06/2010之间日期的所有行。

为此,请使用标准 SQL 子句。首先需要使用内置的日期和时间函数相应地转换日期。BETWEEN


答案 2

声明日期列的便捷语法如下所示:

"CREATE TABLE "
            + "my_table"
            + "(date_time " 
            + " DATETIME DEFAULT CURRENT_TIMESTAMP);");

这将默认插入到当前日期时间的值。或者,您可以使用CURRENT_DATE值或CURRENT_TIME值。您不必在每次创建行时都手动插入时间戳。

您可以在此处阅读有关此方法的信息:Android 在 SQLite 数据库中插入日期时间值