PostgreSQLμμ date_trunc ν¨μλ λ μ§ λλ μκ°μ μΌλΆλ₯Ό μ§μ λ λ¨μλ‘ μλ₯΄λ λ° μ¬μ©λλ€. μ΄ ν¨μλ μ£Όμ΄μ§ λ¨μμ λ°λΌ μ£Όμ΄μ§ λ μ§ λλ μκ°μ κ°μ λ°μ¬λ¦Ό λλ λ²λ¦Όνμ¬ λ°ννλ€.
date_trunc(unit, source);
- unit: μλ₯΄κ³ μ νλ μκ° λλ λ μ§μ λ¨μλ₯Ό μ§μ
- source: μλ₯΄κ³ μ νλ λμμ΄ λλ λ μ§ λλ μκ°
date_trunc μ¬μ© μμ
νμ¬ λ μ§μ μκ°μμ μκ°μ μλ₯΄κΈ°
SELECT date_trunc('hour', NOW());
-- κ²°κ³Ό: νμ¬ μκ°μ μ κ°κΉμ§μ κ°μ΄ λ°νλ©λλ€.
λ μ§μμ μμ μλ₯΄κΈ°
SELECT date_trunc('month', '2023-03-15'::date);
-- κ²°κ³Ό: '2023-03-01' (ν΄λΉ μμ 첫 λ²μ§Έ λ μ§)μ΄ λ°νλ©λλ€.
μκ°μμ λΆμ μλ₯΄κΈ°
SELECT date_trunc('minute', '2023-03-15 12:34:56'::timestamp);
-- κ²°κ³Ό: '2023-03-15 12:34:00'μ΄ λ°νλ©λλ€.
νμ¬ λ μ§μμ λ μ μλ₯΄κΈ°
SELECT date_trunc('year', CURRENT_DATE);
-- κ²°κ³Ό: νμ¬ μ°λμ 첫 λ²μ§Έ λ μ§κ° λ°νλ©λλ€.
date_trunc ν¨μλ₯Ό μ¬μ©νμ¬ μνλ μκ° λλ λ μ§μ μ λ°λλ₯Ό μ‘°μ ν μ μκ³ , ν¨μμ λ λ²μ§Έ λ§€κ° λ³μλ‘ μ¬μ©λλ sourceλ timestamp, date, timestamptz λ±μ νμμ΄ λ μ μλ€.
λ μ§λ³ λ°μ΄ν° κ°μ Έμ€κΈ°
κ°μΈμ μΌλ‘λ νΉμ DB ν μ΄λΈμ API νΈμΆ κ²°κ³Όμ ν΄λΉ μκ°μ μ μ₯νκ³ μμ λ, λ μ§λ³ API νΈμΆλμ μΆμΆνκΈ° μν΄ date_trunc ν¨μλ₯Ό μ¬μ©νλ€.
SELECT
date_trunc('day', TO_DATE(data_column, 'YYYY-MM-DD HH24:MI:SS')) AS day,
COUNT(*) AS count
FROM
schemas.table
GROUP BY
date_trunc('day', TO_DATE(data_column, 'YYYY-MM-DD HH24:MI:SS'))
ORDER BY
day;
μμ κ°μ 쿼리λ₯Ό μμ±νλ κ²½μ° schemas.tableμμ λ μ§λ₯Ό μ μ₯νλ data_column 컬λΌμ κΈ°μ€μΌλ‘ ν루 λ§λ€ μ μ₯λ λ°μ΄ν°μ κ°μλ₯Ό μΆμΆν μ μλ€. μλλ μΆμΆλ κ²°κ³Όμ΄λ€.