首页 > 解决方案 > SQLite:添加 DateTime 和 TimeSpan

问题描述

我有一个包含 TimeFrames 的 SQLite 表。每个 TimeFrame (至少)有一个 EndTime 和一个 Duration:

给定一些 DateTime 值 dt,查询在 dt 之前开始的所有 TimeFrame。

SELECT ...
FROM
WHERE dt < TimeFrame.EndTime - TimeFrame.Duration

为了执行日期时间计算,SQLite 有一些日期和时间函数。. 这有助于我执行 Where。

DateTime dt = ...
String dtText = DateTimeToSqlLiteFormat(dt);   // yyyy-MM-dd HH:mm:ss.ttt

和 SQLite:

Select ... From ...
Where dtText < DateTime( EndTime, "-nnn.nnnn seconds")

其中nnn.nnnn是 Duration 值的字符串表示形式。

所以我所要做的就是将列 Duration 转换为nnn.nnnn. 由于 Duration 已经是它所代表的 TimeSpan 的两倍 TotalSeconds,我想这不会太难。

但是怎么做?

标签: c#sqlite

解决方案


我不知道这是否仍然相关,但你需要反过来做。strftime('%s', EndTime)使用(或 julianday)将 EndDate 转换为 Unix 时间,然后从中减去持续时间:

Select ... From ...
Where dtText < strftime('%s', EndTime) - Duration

推荐阅读