ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PostgreSQL] 시간, 숫자, 날짜 생성하기 (generate_series)
    DB/PostgreSQL 2022. 2. 20. 16:40

    파이썬과 같은 프로그래밍 언어에서 1~10까지의 수를 생성하거나 2022-01-01 ~ 2022-01-10 까지의 날짜를 생성하는 것은 반복문을 통해 쉽게 만들 수 있습니다.

    postgresql에서도 generate_series 함수를 사용하면 이러한 문제를 쉽게 해결할 수 있습니다.

    generate_series(start, stop, [step 또는 interval))

    3번째 인자는 입력된 타입이 int인지 timestamp인지에 따라서 step 이거나 inteval을 줄 수 있습니다.

    SELECT * FROM generate_series(2,4);
     generate_series
    -----------------
                   2
                   3
                   4
    (3 rows)
    
    SELECT * FROM generate_series(5,1,-2);
     generate_series
    -----------------
                   5
                   3
                   1
    (3 rows)
    
    SELECT * FROM generate_series(4,3);
     generate_series
    -----------------
    (0 rows)
    
    -- this example relies on the date-plus-integer operator
    SELECT current_date + s.a AS dates FROM generate_series(0,14,7) AS s(a);
       dates
    ------------
     2004-02-05
     2004-02-12
     2004-02-19
    (3 rows)
    
    SELECT * FROM generate_series('2008-03-01 00:00'::timestamp,
                                  '2008-03-04 12:00', '10 hours');
       generate_series   
    ---------------------
     2008-03-01 00:00:00
     2008-03-01 10:00:00
     2008-03-01 20:00:00
     2008-03-02 06:00:00
     2008-03-02 16:00:00
     2008-03-03 02:00:00
     2008-03-03 12:00:00
     2008-03-03 22:00:00
     2008-03-04 08:00:00
    (9 rows)
    
    SELECT generate_series('2020-01-01'::date, 
                                                 '2020-12-31'::date, '1 months');
       generate_series   
    -------------------------
    2020-01-01 00:00:00.000000
    2020-02-01 00:00:00.000000
    2020-03-01 00:00:00.000000
    2020-04-01 00:00:00.000000
    2020-05-01 00:00:00.000000
    2020-06-01 00:00:00.000000
    2020-07-01 00:00:00.000000
    2020-08-01 00:00:00.000000
    2020-09-01 00:00:00.000000
    2020-10-01 00:00:00.000000
    2020-11-01 00:00:00.000000
    2020-12-01 00:00:00.000000

    레퍼런스

    Set Returning Functions

    댓글