java - Sqlite 日期时间类型问题

标签 java sqlite

我尝试从 Java 将日期时间插入到 sqlite 数据库中,但事情很奇怪。

当我使用代码 Calendar.getInstance().getTime() 插入时,表中的值是(例如)1359960520718。 当我使用字符串 2010-01-01 插入到表中时,值是正常的:2010-01-01。

但是当我使用字符串2010-21-51插入到表中时,表中的值为2010-21-51。那是一个无效的日期。 有什么问题吗?

最佳答案

这是因为 SQLite 是动态类型的。您可以将任何类型的值写入任何列,它不会提示 - 它可能会默默地以不同的类型存储它。

根据 documentation , 日期时间可以存储为

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

在您的情况下,SQLite 无法将无效日期转换为 INTEGER 格式,而是被迫将其存储为标准字符串。此日期无效,但 SQLite 不关心。

关于java - Sqlite 日期时间类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681827/

相关文章:

Java:查找某个字符并获取子字符串

java - (String)value 和 value.toString() , new Long(value) 和 (Long)value 之间的区别

java - 从 Java 到 MySQL 的 Twitter 文本 : utf8mb4 SQL Error "reportcharsetnr("

c# - 使用 C# 从 sqlite 3 数据库中检索存储在整数字段中的字符串数据

perl - 如何使用 Perl 将图像文件加载到 SQLite 中的 blob 中?

java - 如何在cloudant中构建类来管理使用JSON文档的搜索索引查询的输出

Java,泛型不匹配

Android Sqlite 事务和内容提供程序

ios - 我想将图像保存在 UIImageView swift 3 的特定文件夹中

android - 如何更新sqlite中的整个列?