[mysql] 날짜 / 시간 범위에서 데이터 선택

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;

이 기간 사이에 데이터가 있어도 아무것도 반환하지 않습니다. ‘from’‘to’ 필드 의 값을 강제로 datetime쿼리 에 입력해야합니까?



답변

날짜 형식을 업데이트해야합니다.

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 >= '2012-03-11' and game_date  <= '2012-05-11'


답변

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를 사용해야 할 수 있습니다.)


답변

MySQL 날짜 형식은 YMD입니다. Y / M / D를 사용하고 있습니다. 그것은 잘못된 것입니다. 쿼리를 수정하십시오.

Y / M / D와 같이 날짜를 입력하면 데이터베이스에 null 값이 삽입됩니다.

PHP를 사용하고 있고 양식에서 얻은 날짜가 Y / M / D와 같으면 문을 사용하여이를 대체 할 수 있습니다.

out_date=date('Y-m-d', strtotime(str_replace('/', '-', $data["input_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 서버용입니다.


답변

당신도 사용자 수 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;