SQLite中的日期比较使用ISO8601格式

时间:2014-07-02 11:45:52

标签: java sqlite iso8601

如果SQLite中的日期以ISO8601格式存储,过滤日期的最简单方法是什么?

例如,我的数据库中的日期存储为(例如)2014-07-01T08:00:00.000+01:00

我正在运行查询以查看约会是否发生冲突。当我运行查询时:

select count(*) from Appointment where (EndDateTime > '2014-07-02 08:30' and StartDateTime < '2014-07-02 08:45')

这是一个简单的查询,以查看是否有任何其他约会开始/结束时间交叉到此约会。我知道有一个事实,即在这个查询中应该选择约会。例如,我的一个约会有以下列:

StartDateTime: 2014-07-02T08:00:00.000+01:00
EndDateTime: 2014-07-02T09:00:00.000+01:00

然而,即使我知道自己应该得到充足,我也没有结果。我确信在我的查询中如何过滤日期存在问题 - 任何想法?

1 个答案:

答案 0 :(得分:5)

在查询中用于比较的文字不是部分ISO8601标记:

select count(*) from Appointment where (EndDateTime > '2014-07-02 08:30' and StartDateTime < '2014-07-02 08:45')

日期和时间之间缺少T。比较文字时,比较将在'T'' '之间停止,并且不会考虑时间部分。

您可以在格式模式中使用单引号输出文字T,例如

yyyy-MM-dd'T'HH:mm