SQLite DateTime比较

我似乎无法得到可靠的结果从sqlite数据库查询使用date时间string作为比较如此:

select * from table_1 where mydate >= '1/1/2009' and mydate <= '5/5/2009' 

我应该如何处理date时间比较sqlite?

更新:字段mydate是一个DateTime数据types

解:

跟随date时间函数,并有一个string格式为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') 

SQLite没有专用的date时间types ,但是有几个date时间函数 。 遵循这些函数所理解的string表示格式(实际上只是1-10格式)(将值存储为string),然后您可以使用它们,string上的字典比较将匹配date时间比较(只要您不尝试将date与时间或date时间进行比较,无论如何,这并没有什么意义)。

根据您使用的语言,您甚至可以自动转换 。 (这不适用于像例子这样的SQL语句比较,但会让你的生活更轻松。)

为了解决这个问题,我把date存储为YYYYMMDD 。 因此, where mydate >= '20090101' and mydate <= '20050505'

它只是简单的工作。 您可能只需编写一个parsing器来处理用户inputdate的方式,以便将它们转换为YYYYMMDD

我最近有同样的问题,我解决这个问题:

 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不能比较date。 我们需要转换成秒,并将其转换为整数。

 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' 

你也可以编写你自己的用户函数来处理你select的格式的date。 SQLite有一个相当简单的方法来编写自己的用户函数。 例如,我写了一些增加持续时间在一起。

我必须将时间信息存储在其中,并能够使用以下格式查询:

 "SELECT * FROM events WHERE datetime(date_added) BETWEEN datetime('2015-03-06 20:11:00 -04:00') AND datetime('2015-03-06 20:13:00 -04:00')" 

时间以以下格式作为常规TEXT存储在数据库中:

 2015-03-06 20:12:15 -04:00 

以下是比较date的方法,但在此之前,我们需要确定存储在数据库中的date格式

我有date存储在MM / DD / YYYY HH:MM格式,所以它必须在该格式进行比较

  1. 下面的查询比较将date转换为MM / DD / YYY格式,并获取从过去五天到今天的数据。 BETWEEN运算符将有所帮助,您可以简单地指定开始date和结束date。

     select * from myTable where myColumn BETWEEN strftime('%m/%d/%Y %H:%M', datetime('now','localtime'), '-5 day') AND strftime('%m/%d/%Y %H:%M',datetime('now','localtime')); 
  2. 下面的查询将使用大于运算符(>)。

      select * from myTable where myColumn > strftime('%m/%d/%Y %H:%M', datetime('now','localtime'), '-5 day'); 

我所做的所有计算都是使用当前时间,您可以根据需要更改格式和date。

希望这会帮助你

Summved

我的查询我做了如下:

 SELECT COUNT(carSold) FROM cars_sales_tbl WHERE date BETWEEN '2015-04-01' AND '2015-04-30' AND carType = "Hybrid" 

我通过@ ifredy的回答得到了提示。 我所做的是,我希望这个查询在iOS中运行,使用Objective-C。 它的工作原理!

希望有人做的iOS开发,也将得到使用这个答案!