Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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
Mysql 选择日期/时间范围之间的数据_Mysql_Datetime - Fatal编程技术网

Mysql 选择日期/时间范围之间的数据

Mysql 选择日期/时间范围之间的数据,mysql,datetime,Mysql,Datetime,如何在MySQL中选择日期范围之间的数据。我的datetime列采用24小时祖鲁时间格式 select * from hockey_stats where game_date between '11/3/2012 00:00:00' and '11/5/2012 23:59:00' order by game_date desc; 尽管在这些时间段之间有数据,但不返回任何内容。是否必须强制“从”和“到”字段中的值在查询中键入日期时间?您需要更新日期格式: select * from hoc

如何在MySQL中选择日期范围之间的数据。我的
datetime
列采用24小时祖鲁时间格式

select * from hockey_stats 
where game_date between '11/3/2012 00:00:00' and '11/5/2012 23:59:00' 
order by game_date desc;

尽管在这些时间段之间有数据,但不返回任何内容。是否必须强制“从”和“到”字段中的值在查询中键入日期时间?

您需要更新日期格式:

select * from hockey_stats 
where game_date between '2012-03-11 00:00:00' and '2012-05-11 23:59:00' 
order by game_date desc;

以下是使用日期函数的简单方法:

select *
from hockey_stats
where date(game_date) between date('2012-11-03') and date('2012-11-05')
order by game_date desc
select * from hockey_stats 
where
  game_date between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
                and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s') 
order by game_date desc;
您可能需要使用以下函数:

select *
from hockey_stats
where date(game_date) between date('2012-11-03') and date('2012-11-05')
order by game_date desc
select * from hockey_stats 
where
  game_date between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
                and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s') 
order by game_date desc;

(如果游戏日期是一个字符串,您可能需要在其上使用STR_to_date)

MySQL日期格式是:Y-M-D。您使用的是Y/M/D。这是错误的。 修改您的查询

如果像Y/M/D一样插入日期,则在数据库中插入空值

如果您使用的是PHP,并且从表单中获取的日期类似于Y/M/D,则可以使用以下语句替换此日期

out_date=date('Y-m-d', strtotime(str_replace('/', '-', $data["input_date"])))

一个简单的方法:

select  * from  hockey_stats 
where  game_date >= '2012-03-11' and game_date  <= '2012-05-11'
从曲棍球统计数据中选择*

其中,game_date>='2012-03-11'和game_date可以通过以下方式进行查询:

select * from hockey_stats 
where game_date between '2018-01-01' and '2018-01-31';
如果时间不是问题,这是可行的

考虑到时间,还应按照以下方式进行:

select * from hockey_stats where (game_date between '2018-02-05 01:20:00' and '2018-02-05 03:50:00');
注意,这是针对MySQL服务器的。

您可以使用用户函数,并根据发布的格式传递自己的日期参数:

select * from hockey_stats where game_date 
  between STR_TO_DATE('11/3/2012 00:00:00', '%c/%e/%Y %H:%i:%s')
  and STR_TO_DATE('11/5/2012 23:59:00', '%c/%e/%Y %H:%i:%s') 
order by game_date desc;
或者只使用MySQL处理日期YYYY:MM:DD HH:MM:SS的格式,并将查询作为


从曲棍球统计数据中选择*,其中比赛日期介于“2012-03-11 00:00:00”和“2012-05-11 23:59:00”之间,按比赛日期描述排序

您必须搜索日期保护,了解如何在数据库中插入游戏日期数据。。例如,如果在长日期或短日期上插入日期值

SELECT * FROM hockey_stats WHERE game_date >= "6/11/2018" AND game_date <= "6/17/2018"

就这么简单。

游戏日期的数据类型是什么?它的日期时间。我想我知道我为什么会困惑了。我使用的是toad软件mysql,默认情况下,它以我在日期范围内使用的格式呈现日期,这就是我使用相同格式的原因。所以问题是我提供的日期格式在我的范围内。如果我使用Eugen Rieck提供的格式,它会像预期的那样工作。我是瞎子还是这是性能杀手<代码>日期(game_date)
将根据计算的值而不是字段运行比较-导致不使用索引和触摸每一行(即全表扫描)@尤金里克。总的来说,假设在
game\u date
上有一个索引,您是对的。即使没有索引,表的大小也必须适中,以便在性能上有明显的差异。关于hockey_stats的名称,我认为这不是一个很大的表。日期文本的格式是'YYYY-MM-DD HH:MM:SS',使用BETWEEN不是最佳做法,特别是因为MySQL现在支持次秒精度。使用23:59:59距离一天的结束还有整整一秒钟
其中game_date>='2012-03-11'和game_date<'2012-05-12'
是定义日期范围的最精确方法,适用于从日期到亚秒单位的任何级别的时间精度。@2013年回答这个问题时,已经被_使用了,没有亚秒MySQL-我还没有听说过23:59到00:00之间开始的曲棍球比赛开始时间不到一秒。我是为使用精度不到一秒的MySQL版本的读者留下这条评论的。MySQL版本5.6.4或更高版本支持分数秒。(关于日期范围所针对的运动或目的)它是为了准确性,而不是性能。正如前面提到的23:59:59不是一天的结束。通过在日期/时间范围的上限上使用小于,可以简洁而准确地避免此问题<代码>其中game_date>='2012-03-11'和game_date<'2012-05-12'
我也在尝试相同的方法,但无法正常工作,获取随机的日期数据。