我在python中使用SQLite。我有一个有两个字段的数据库(时间戳,reading)。在
时间戳是ISO8601字符串,格式如下“YYYY-MM-DD HH:MM:不锈钢不锈钢". 在
运行此SQL查询时:
SELECT timestamp, value FROM 'readings' WHERE timestamp > datetime('2017-08-30 14:19:28.684314')
我得到了所有合适的读数,其中时间戳是从提供的日期开始的,但我也从我传入的日期时间中获得读数(在示例中:“2017-08-30 14:19:28.684314”)。在
我的问题是为什么大于比较运算符假装它是大于或等于运算符?在
我解决了问题。我将在这里详细说明,以防对其他人有所帮助。在
是我的疑问。SQLite没有日期或日期时间的直接类型
我以前的疑问是:
隐式地依赖SQL来确定时间戳字段是日期时间。SQLite在内部将它们存储为文本字段。在
当我将查询修改为以下内容时:
^{pr2}$我开始得到我期望的结果。在
SQLite没有单独的时间戳数据类型。在
datetime()
只返回SQLite默认格式的字符串:这不包括毫秒。因此,比较结果是有毫秒的字符串和没有毫秒的字符串;第一个比较大,因为(在前19个字符相等之后)它有更多的字符。在
对两个值调用
datetime()
将从两个值中删除毫秒数。 对这两个值调用datetime()
并直接比较它们可能是一个更好的主意。在相关问题 更多 >
编程相关推荐