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

时间:2013-04-04 20:46:12

标签: mysql datetime

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

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;

尽管在这些时间段之间有数据,但不返回任何内容。我是否必须在查询中强制'中的值从''变为'字段到datetime类型?

8 个答案:

答案 0 :(得分:114)

您需要更新日期格式:

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;

答案 1 :(得分:17)

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

select *
from hockey_stats
where date(game_date) between date('2012-11-03') and date('2012-11-05')
order by game_date desc

答案 2 :(得分:7)

一种简单的方法:

select  * from  hockey_stats 
where  game_date >= '2012-03-11' and game_date  <= '2012-05-11'

答案 3 :(得分:5)

您可能需要使用STR_TO_DATE功能:

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;

(如果game_date是一个字符串,您可能需要在其上使用STR_TO_DATE)

答案 4 :(得分:4)

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"])))

答案 5 :(得分:3)

以简单的方式可以查询

select * from hockey_stats 
where game_date between '2018-01-01' and '2018-01-31';

如果时间不是问题,这是有效的。

考虑时间也遵循以下方式: select * from hockey_stats where(game_date between&#39; 2018-02-05 01:20:00&#39;&#39; 2018-02-05 03:50:00&#39;); 请注意,这是针对MySQL服务器的。

答案 6 :(得分:2)

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

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并将查询设为

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;

答案 7 :(得分:2)

您必须搜索日期防御方法,以确保如何在数据库中插入该game_date数据。例如,如果您将日期值插入的是长日期还是短日期。

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

您还可以使用 BETWEEN

SELECT * FROM hockey_stats WHERE game_date BETWEEN "6/11/2018" AND "6/17/2018"

就这么简单。