복붙노트

[SQL] 어떻게 MySQL을 사용 두 날짜 사이 쿼리합니까?

SQL

어떻게 MySQL을 사용 두 날짜 사이 쿼리합니까?

다음 쿼리 :

SELECT * FROM `objects` 
WHERE (date_field BETWEEN '2010-09-29 10:15:55' AND '2010-01-30 14:15:55')

아무 것도 반환하지 않습니다.

나는 쿼리를 통해 작동하기에 충분한 데이터보다 더 있어야합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

해결법

  1. ==============================

    1.두 번째 날짜 첫 번째 날짜 이전 (즉. 당신이 2010년 9월 29일 월 (30)부터 2010 년까지 조회된다). 날짜의 순서를 반대로하십시오 :

    두 번째 날짜 첫 번째 날짜 이전 (즉. 당신이 2010년 9월 29일 월 (30)부터 2010 년까지 조회된다). 날짜의 순서를 반대로하십시오 :

    SELECT *
    FROM `objects`
    WHERE (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
    
  2. ==============================

    2.귀하의 질의는 다음과 같이 일을해야한다

    귀하의 질의는 다음과 같이 일을해야한다

    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')
    
  3. ==============================

    3.타입 날짜의 DATE_FIELD 있습니까? 또한 먼저 이전 날짜를 넣어해야합니다.

    타입 날짜의 DATE_FIELD 있습니까? 또한 먼저 이전 날짜를 넣어해야합니다.

    그것은해야한다:

    SELECT * FROM `objects` 
    WHERE  (date_field BETWEEN '2010-01-30 14:15:55' AND '2010-09-29 10:15:55')
    
  4. ==============================

    4.DATE ()는 MySQL의 기능입니다만을 추출 날짜 또는 날짜의 날짜 부분 / 시간 표현

    DATE ()는 MySQL의 기능입니다만을 추출 날짜 또는 날짜의 날짜 부분 / 시간 표현

    SELECT * FROM table_name WHERE DATE(date_field) BETWEEN '2016-12-01' AND '2016-12-10';
    
  5. ==============================

    5.@sabin에서 대답 한가 (시간 제외)에만 날짜 부분을 비교하고자하는 경우 힌트를 연장으로 :

    @sabin에서 대답 한가 (시간 제외)에만 날짜 부분을 비교하고자하는 경우 힌트를 연장으로 :

    비교하는 필드 형 날짜로부터입니다 만 날짜 비교를 위해 지정되는 경우,이 날짜는 내부적으로 날짜 값으로 변환됩니다. 이 수단이 다음 쿼리

    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')
    

    내부적으로.

    이 결과에 차례 리드에 0시 0분 0초보다 시간 값보다와 2010-09-29에서 개체를 포함하지 않습니다!

    날짜 2010-09-29 모든 개체가 너무 포함 할 필요가있는 경우 따라서, 비교하는 필드를 날짜로 변환 할 수있다 :

    SELECT * FROM `objects` WHERE (DATE(date_time_field) BETWEEN '2010-01-30' AND '2010-09-29')
    
  6. ==============================

    6.당신은 이하가보다 크거나 같은과와 비교하여, 수동으로 할 수 있습니다.

    당신은 이하가보다 크거나 같은과와 비교하여, 수동으로 할 수 있습니다.

     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';
    
  7. ==============================

    7.서버 측 또는 클라이언트 측에서 날짜 구성에 문제가 될 수 있습니다. 호스트가 스페인어, 프랑스어 또는 구성 할 때 나는 여러 데이터베이스에 공통의 문제가이 발견 한 형식 일 / 월 / 년 또는 mm / DD / YYYY에 영향을 미칠 수있는 그 무엇이든 ....

    서버 측 또는 클라이언트 측에서 날짜 구성에 문제가 될 수 있습니다. 호스트가 스페인어, 프랑스어 또는 구성 할 때 나는 여러 데이터베이스에 공통의 문제가이 발견 한 형식 일 / 월 / 년 또는 mm / DD / YYYY에 영향을 미칠 수있는 그 무엇이든 ....

  8. ==============================

    8.날짜로 그냥 캐스트 DATE_FIELD

    날짜로 그냥 캐스트 DATE_FIELD

    SELECT * FROM `objects` 
    WHERE (cast(date_field as date) BETWEEN '2010-09-29' AND 
    '2010-01-30' )
    
  9. ==============================

    9.날짜 및 시간 값을 사용하는 경우, 날짜 시간이 아닌 날짜로 필드를 캐스팅해야합니다. 시도 :

    날짜 및 시간 값을 사용하는 경우, 날짜 시간이 아닌 날짜로 필드를 캐스팅해야합니다. 시도 :

    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))
    
  10. ==============================

    10.주위 날짜를 전환하십시오 :

    주위 날짜를 전환하십시오 :

    2010-09-29 > 2010-01-30?
    
  11. from https://stackoverflow.com/questions/3822648/how-do-i-query-between-two-dates-using-mysql by cc-by-sa and MIT license