Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite数据库-选择两个日期之间的数据?_Sql_Select_Sqlite - Fatal编程技术网

SQLite数据库-选择两个日期之间的数据?

SQLite数据库-选择两个日期之间的数据?,sql,select,sqlite,Sql,Select,Sqlite,我想按日期选择我的数据-从一个日期到另一个日期,所以我有这个查询 SELECT * FROM mytalbe WHERE date BETWEEN '2014-10-09' AND '2014-10-10' 但此查询仅返回“2014-10-09”中的数据,不包括“2014-10-10”中的数据,除非我将查询更改为以下内容 SELECT * FROM mytalbe WHERE date BETWEEN '2014-10-09' AND '2014-10-11' 这不是一个理想的解决方案。如何

我想按日期选择我的数据-从一个日期到另一个日期,所以我有这个查询

SELECT * FROM mytalbe WHERE date BETWEEN '2014-10-09' AND '2014-10-10'
但此查询仅返回“2014-10-09”中的数据,不包括“2014-10-10”中的数据,除非我将查询更改为以下内容

SELECT * FROM mytalbe WHERE date BETWEEN '2014-10-09' AND '2014-10-11'
这不是一个理想的解决方案。如何选择包含“2014-10-10”中数据的数据

注:

我认为我的问题不同于其他重复的问题,因为

我的日期类型是文本 我需要选择没有时间的日期数据。 这是一个sqlite数据库。。。 我的数据样本

    sid     nid timestamp   date    
1   20748   5   1412881193  2014-10-09 14:59:53 
2   20749   5   1412881300  2014-10-09 15:01:40 
3   20750   5   1412881360  2014-10-09 15:02:40

如果日期是时间戳,则需要执行以下操作:

SELECT * FROM mytalbe WHERE date BETWEEN '2014-10-09 00:00:00' AND '2014-10-10 23:59:59'
或者你可以做,我相信:

SELECT * FROM mytalbe WHERE DATE(date) BETWEEN '2014-10-09' AND '2014-10-10'
或者,由于它是一个文本字段:

SELECT * FROM mytalbe WHERE DATE_FORMAT(date,'%Y-%m-%d') BETWEEN '2014-10-09' AND '2014-10-10'

你也可以不使用between

问题再次更新,补充答案

啊。你有时间戳字段吗?在这种情况下:

select date(from_unixtime(timestamp)) from mytabel where date(from_unixtime(timestamp)) between '2014-10-09' and '2014-10-10'
我们终于到达了sqlite


同样的问题解决了,谢谢。 我的代码:

var FechaInicio = dtpFechaInicial.Value.ToString("yyyy-MM-dd");
var FechaFinal = dtpFechaFinal.Value.ToString("yyyy-MM-dd");

string SQLcmd = $"SELECT * FROM sorteos WHERE DATE(fecha) BETWEEN ('{FechaInicio}') AND ('{FechaFinal}')";

日期是什么字段类型?“2014-10-11”表示10日午夜。就像在10号的第一分钟。要包含10号,您需要添加时间11:59或将其设为11号。日期类型为文本…日期类型为文本没有意义您的意思是您的日期存储为varchars吗?我理解,这是经常发生的。好吧,如果你有不同的日期类型,你可以用date_FORMATdate,“%m-%d-%Y”来让它们成为常规日期,谢谢。我已经试过了,但仍然没有得到“2014-10-10”中的数据。我认为问题在于日期类型是文本…@teelou那么你能在问题中发布你的表数据吗,因为从上面的例子中可以看到,查询在文本字段中的日期的效果与预期的一样。这个答案对日期时间类型做了同样的事情-你希望OP转换为Date@teelou它本质上意味着unix时间-即,将时间戳视为unix纪元(1970-01-01 00:00)之后的秒:00@teelou没问题。我猜这里至少有一个答案解决了你的问题,所以你可能应该接受其中一个。如果你将转换添加到上面的datetime注释,那么第二个查询就是正确的答案。谢谢更新。我通过sqliteSendQuerycon、语句、bind中的错误得到这个错误。数据:语句中的错误:没有这样的函数:日期\格式。。。sqlite?为什么这个问题用MySQL标记,但这仍然有效-从mytalbe中选择*其中DATEdate介于“2014-10-09”和“2014-10-10”之间您可以从一开始就提到,您还有一个时间戳字段:/
select substring(date, 1, 10) from dd where substring(date, 1, 10) between '2014-10-09' and '2014-10-10';
select date(from_unixtime(timestamp)) from mytabel where date(from_unixtime(timestamp)) between '2014-10-09' and '2014-10-10'
select date(datetime(timestamp, 'unixepoch')) 
  from mytable 
    where date(datetime(timestamp, 'unixepoch')) 
      between '2014-10-09' and '2014-10-10';
var FechaInicio = dtpFechaInicial.Value.ToString("yyyy-MM-dd");
var FechaFinal = dtpFechaFinal.Value.ToString("yyyy-MM-dd");

string SQLcmd = $"SELECT * FROM sorteos WHERE DATE(fecha) BETWEEN ('{FechaInicio}') AND ('{FechaFinal}')";