c# - SQLite:添加 DateTime 和 TimeSpan
问题描述
我有一个包含 TimeFrames 的 SQLite 表。每个 TimeFrame (至少)有一个 EndTime 和一个 Duration:
- EndTime 表示时间范围的结束 DateTime;在 SQLite 中,这是格式为 yyyy-MM-dd HH:mm:ss 的字符串
- Duration 表示时间范围的 TimeSpan;在 SQLite 中,这是一个表示 Duration 的 TotalSeconds 的双精度值。
给定一些 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,我想这不会太难。
但是怎么做?
解决方案
我不知道这是否仍然相关,但你需要反过来做。strftime('%s', EndTime)
使用(或 julianday)将 EndDate 转换为 Unix 时间,然后从中减去持续时间:
Select ... From ...
Where dtText < strftime('%s', EndTime) - Duration
推荐阅读
- android - 想要创建一个应用程序,它在中心垂直和水平显示 3 个按钮,但是当我尝试时只有第 3 个按钮在那里,
- javascript - 尽管将 Cors 与 Axios 一起使用,我仍然收到此错误:请求的资源上不存在“Access-Control-Allow-Origin”标头
- c++ - 使用“scanf”切换函数有一个奇怪的返回
- python - 如何仅使用上述/滞后值在 Pandas 中进行插值?
- html - CSS 布局,页眉,页脚,2 列,固定 100% 高度 - 计算机上没有垂直窗口滚动(设计器 GUI 布局)
- cplex - 是否可以使用 OPL 简化表达式?
- java - 以编程方式将 POST 二进制内容设置为 Jmeter 中的 HTTP 采样器
- c++ - 这是插入排序的正确实现吗?
- r - 将 for 循环生成的多个 ggplots 放入一个图像中
- javascript - 我在控制台中有此错误:$(...).datepicker 不是函数