【发布时间】:2020-01-20 10:35:09
【问题描述】:
我有一个包含 TimeFrames 的 SQLite 表。每个 TimeFrame 都有(至少)一个 EndTime 和一个 Duration:
- EndTime 表示时间范围的结束日期时间;在 SQLite 中,这是一个格式为 yyyy-MM-dd HH:mm:ss 的字符串
- Duration 表示时间范围的 TimeSpan;在 SQLite 中,这是一个表示 Duration 的 TotalSeconds 的双精度值。
给定一些 DateTime 值 dt,查询在 dt 之前开始的所有 TimeFrames。
SELECT ...
FROM
WHERE dt < TimeFrame.EndTime - TimeFrame.Duration
要执行日期时间计算,SQLite has some Date and Time Functions.。这有助于我执行 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,我想这不会太难。
但是怎么做呢?
【问题讨论】:
-
DateTime( EndTime, -Duration || " seconds")?||是字符串连接运算符