복붙노트

[SQL] 날짜 범위와 PostgreSQL을 쿼리

SQL

날짜 범위와 PostgreSQL을 쿼리

나는 날짜가 특정 월 및 연도에 어디 결과를 반환하는 내 PostgreSQL의 DB를 조회하려합니다. 즉 한 달 년에 대한 모든 값을 부탁합니다.

내가 지금까지 그것을 할 수 있었던 유일한 방법은 다음과 같이이다 :

SELECT user_id 
FROM user_logs 
WHERE login_date BETWEEN '2014-02-01' AND '2014-02-28'

이것에 문제는이 테이블을 쿼리 전에 첫 번째 날짜와 마지막 날짜를 계산해야한다는 것입니다. 이 작업을 수행하는 간단한 방법이 있나요?

감사

해결법

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

    1.당신이> = 시작과 <끝 사용하는 경우 날짜 (및 시간)으로 많은 일들이 간단하게된다.

    당신이> = 시작과 <끝 사용하는 경우 날짜 (및 시간)으로 많은 일들이 간단하게된다.

    예를 들면 :

    SELECT
      user_id
    FROM
      user_logs
    WHERE
          login_date >= '2014-02-01'
      AND login_date <  '2014-03-01'
    

    이 경우 당신은 여전히 ​​당신이 필요로하는 달의 시작 날짜를 계산하기 위해 필요하지만, 그 방법의 수에 정직해야한다.

    종료일은 단순화되고; 다만 정확히 한 달에 추가합니다. 28 일, 30 일, 31 일 등 약 없음의 간섭이 없습니다

    이 구조는 인덱스의 사용을 유지할 수있는 장점이있다.

    많은 사람들은 다음과 같은 형태를 제안 할 수 있지만 인덱스를 사용하지 마십시오

    WHERE
          DATEPART('year',  login_date) = 2014
      AND DATEPART('month', login_date) = 2
    

    이 일치하는 행의 범위 (A 범위-추구)를 찾기 위해 인덱스를 사용하여 (스캔) 테이블에있는 모든 단일 행의 조건을 계산하지 포함한다.

  2. ==============================

    2.PostgreSQL의 9.2에서 범위 유형이 지원됩니다. 그래서 당신은이 같이 쓸 수 있습니다 :

    PostgreSQL의 9.2에서 범위 유형이 지원됩니다. 그래서 당신은이 같이 쓸 수 있습니다 :

    SELECT user_id
    FROM user_logs
    WHERE '[2014-02-01, 2014-03-01]'::daterange @> login_date
    

    이 문자열 비교를보다 효율적이어야한다

  3. ==============================

    3.그냥 여기 경우 누군가 땅에 ... 8.1 이후 당신은 간단하게 사용할 수 있습니다 :

    그냥 여기 경우 누군가 땅에 ... 8.1 이후 당신은 간단하게 사용할 수 있습니다 :

    SELECT user_id 
    FROM user_logs 
    WHERE login_date BETWEEN SYMMETRIC '2014-02-01' AND '2014-02-28'
    

    워드 프로세서 :

  4. ==============================

    4.설명서를 참조하십시오.

    설명서를 참조하십시오.

    http://www.postgresql.org/docs/9.1/static/functions-datetime.html

    나는 그 같은 쿼리를 사용 :

    WHERE
    (
        date_trunc('day',table1.date_eval) = '2015-02-09'
    )
    

    또는

    WHERE(date_trunc('day',table1.date_eval) >='2015-02-09'AND date_trunc('day',table1.date_eval) <'2015-02-09')    
    

    Juanitos Ingenier.

  5. from https://stackoverflow.com/questions/23335970/postgresql-query-between-date-ranges by cc-by-sa and MIT license