다음 쿼리 :
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')
아무것도 반환하지 않습니다.
그래도 쿼리가 작동하기에 충분한 데이터가 있어야합니다. 내가 뭘 잘못하고 있죠?
답변
두 번째 날짜는 첫 날짜 이전입니다 (예 : 2010 년 9 월 29 일과 2010 년 1 월 30 일 사이에 쿼리 함). 날짜 순서를 반대로 해보십시오.
SELECT *
FROM `objects`
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
답변
검색어 날짜는
select * from table between `lowerdate` and `upperdate`
시험
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
답변
인가 date_field
형 datetime
? 또한 초기 날짜를 먼저 입력해야합니다.
그것은해야한다:
SELECT * FROM `objects`
WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
답변
DATE ()는 날짜 또는 날짜 / 시간 표현식의 날짜 부분 만 추출하는 MySQL 함수입니다.
SELECT * FROM table_name WHERE DATE(date_field) BETWEEN '2016-12-01' AND '2016-12-10';
답변
@sabin의 답변에 대한 확장 기능과 날짜 부분 만 시간 을 비교하려는 경우 힌트 :
비교할 필드가 datetime 유형의 것이고 날짜 만 비교를 위해 지정된 경우,이 날짜 는 내부적으로 날짜 / 시간 값으로 변환 됩니다. 이것은 다음 쿼리가
SELECT * FROM `objects` WHERE (date_time_field BETWEEN '2010-01-30' AND '2010-09-29')
로 변환됩니다
SELECT * FROM `objects` WHERE (date_time_field BETWEEN '2010-01-30 00:00:00' AND '2010-09-29 00:00:00')
내부적으로.
결과적으로 시간이 00:00:00보다 큰 2010-09-29의 개체가 포함되지 않은 결과가 발생합니다!
따라서 날짜가 2010-09-29 인 모든 개체도 포함해야하는 경우 비교할 필드를 날짜로 변환해야합니다.
SELECT * FROM `objects` WHERE (DATE(date_time_field) BETWEEN '2010-01-30' AND '2010-09-29')
답변
크거나 같거나 작거나 같게 비교하여 수동으로 수행 할 수 있습니다.
select * from table_name where created_at_column >= lower_date and created_at_column <= upper_date;
이 예에서는 특정 날마다 데이터를 검색해야합니다. 우리는 하루의 시작부터 다른 날의 최신 초까지 비교할 것입니다.
select * from table_name where created_at_column >= '2018-09-01 00:00:00' and created_at_column <= '2018-09-05 23:59:59';
답변
서버 측 또는 클라이언트 측의 날짜 구성에 문제가있을 수 있습니다. 호스트가 스페인어, 프랑스어 또는 기타 형식으로 구성된 경우 여러 데이터베이스에서 공통적 인 문제인 것으로 나타났습니다. dd / mm / yyyy 또는 mm / dd / yyyy 형식에 영향을 줄 수 있습니다.