我似乎无法从使用日期时间字符串作为比较的sqlite数据库的查询中获得可靠的结果,如下所示:
select * from table_1 where mydate >= '1/1/2009' and mydate <= '5/5/2009'
我该如何处理与sqlite的日期时间比较?
update:field mydate是DateTime数据类型
解:
遵循datetime函数并具有字符串格式为YYYY-MM-DD HH:mm:ss我取得了如下良好的结果,如下所示
select * from table_1 where mydate >= Datetime('2009-11-13 00:00:00') and mydate <= Datetime('2009-11-15 00:00:00')
小智.. 96
为了解决这个问题,我将日期存储为YYYYMMDD
.从而,
where mydate >= '20090101' and mydate <= '20050505'
它只是简单的工作.您可能只需要编写一个解析器来处理用户输入日期的方式,以便将它们转换为YYYYMMDD
.
为了解决这个问题,我将日期存储为YYYYMMDD
.从而,
where mydate >= '20090101' and mydate <= '20050505'
它只是简单的工作.您可能只需要编写一个解析器来处理用户输入日期的方式,以便将它们转换为YYYYMMDD
.
SQLite没有专用的日期时间类型,但确实有一些日期时间函数.遵循那些函数理解的字符串表示格式(实际上只有格式1-10)(将值存储为字符串)然后你可以使用它们,加上字符串上的词典比较将匹配日期时间比较(只要你不这样做)尝试将日期与时间或日期时间进行比较,这无论如何都没有多大意义.
根据您使用的语言,您甚至可以获得自动转换.(这不适用于SQL语句中的比较,例如示例,但会让您的生活更轻松.)
我最近遇到了同样的问题,我解决了这个问题:
SELECT * FROM table WHERE strftime('%s', date) BETWEEN strftime('%s', start_date) AND strftime('%s', end_date)
以下对我来说使用SQLite很好:
SELECT * FROM ingresosgastos WHERE fecharegistro BETWEEN "2010-01-01" AND "2013-01-01"
Sqlite无法比较日期.我们需要转换为秒并将其转换为整数.
例
SELECT * FROM Table WHERE CAST(strftime('%s', date_field) AS integer) <=CAST(strftime('%s', '2015-01-01') AS integer) ;
以下对我有用。
SELECT * FROM table_log WHERE DATE(start_time) <= '2017-01-09' AND DATE(start_time) >= '2016-12-21'