MySQL을 사용하여 두 날짜 사이에 어떻게 쿼리합니까?
다음 쿼리 :
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 유형의 것이고 날짜 만 비교를 위해 지정된 경우,이 날짜 는 내부적으로 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 형식에 영향을 줄 수 있습니다.
date_field를 날짜로 캐스트하십시오.
SELECT * FROM `objects`
WHERE (cast(date_field as date) BETWEEN '2010-09-29' AND
'2010-01-30' )
날짜 및 시간 값을 사용할 때는 필드를로 변환 DateTime
하지 말아야 Date
합니다. 시도 :
SELECT * FROM `objects`
WHERE (CAST(date_field AS DATETIME)
BETWEEN CAST('2010-09-29 10:15:55' AS DATETIME) AND CAST('2010-01-30 14:15:55' AS DATETIME))
날짜를 바꿔보십시오.
2010-09-29 > 2010-01-30?
참고 URL : https://stackoverflow.com/questions/3822648/how-do-i-query-between-two-dates-using-mysql
'Programing' 카테고리의 다른 글
안드로이드에서 문자열을 Uri로 바꾸기 (0) | 2020.05.05 |
---|---|
git에서 pull과 clone의 차이점은 무엇입니까? (0) | 2020.05.05 |
URL에서 hashbang를 제거하는 방법? (0) | 2020.05.01 |
html 하이퍼 링크 'a'태그의 기본 링크 색상을 제거하는 방법은 무엇입니까? (0) | 2020.05.01 |
줄 바꿈을 제거하지 않고 Ruby에서 여러 줄의 긴 문자열 나누기 (0) | 2020.05.01 |