繁体   English   中英

SQLite:添加日期时间和时间跨度

[英]SQLite: add DateTime and TimeSpan

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

  • EndTime 表示时间帧的结束日期时间; 在 SQLite 中,这是一个格式为 yyyy-MM-dd HH:mm:ss 的字符串
  • Duration 表示时间范围的 TimeSpan; 在 SQLite 中,这是一个表示持续时间的 TotalSeconds 的双精度值。

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

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,我想这不会太难。

但是如何?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM