PostgreSQL을 사용하여 날짜 필드에 Where 절 사용

Shihab Sikder 2023년6월20일
PostgreSQL을 사용하여 날짜 필드에 Where 절 사용

이 자습서에서는 날짜 필드에서 WHERE 쿼리를 수행하는 방법을 알려줍니다. 날짜 표현에는 여러 가지 형식이 있습니다. 일반적으로 문자열 또는 varchar로 반환됩니다.

때때로 형식 오류가 발생합니다. cast()를 사용하여 열을 날짜 유형으로 캐스팅한 다음 where 절 내에서 사용하기만 하면 됩니다.

PostgreSQL을 사용하여 Date 필드에 WHERE 절 사용

사용자 테이블이 있고 날짜를 포함하는 필드가 있다고 가정해 보겠습니다.

create table Users (
  id INT PRIMARY KEY,
  full_name VARCHAR(50),
  email VARCHAR(50),
  register DATE
);

insert into Users (id, full_name, email, register)
values
( 1, 'Trula', 'ttawse0@washingtonpost.com', '2022-06-17'),
( 2, 'Ansel', 'acotter1@friendfeed.com', '2022-06-18'),
( 3, 'Baillie', 'bgloves2@squidoo.com', '2022-06-18'),
( 4, 'Lay', 'lforsythe3@digg.com', '2021-11-23'),
( 5, 'Berton', 'bfowley4@myspace.com', '2021-12-05'),
( 6, 'Malory', 'mflack5@salon.com', '2022-01-31'),
( 7, 'Fernanda', 'fianson6@meetup.com', '2021-11-26'),
( 8, 'Hester', 'hshyram7@uiuc.edu', '2022-03-13'),
( 9, 'Ced', 'cmorsey8@goo.gl', '2021-09-18'),
( 10, 'Tommy', 'tleipoldt9@sbwire.com', '2022-04-05');

select* from Users;

출력:

 id | full_name |           email            |  register
----+-----------+----------------------------+------------
  1 | Trula     | ttawse0@washingtonpost.com | 2022-06-17
  2 | Ansel     | acotter1@friendfeed.com    | 2022-06-18
  3 | Baillie   | bgloves2@squidoo.com       | 2022-06-18
  4 | Lay       | lforsythe3@digg.com        | 2021-11-23
  5 | Berton    | bfowley4@myspace.com       | 2021-12-05
  6 | Malory    | mflack5@salon.com          | 2022-01-31
  7 | Fernanda  | fianson6@meetup.com        | 2021-11-26
  8 | Hester    | hshyram7@uiuc.edu          | 2022-03-13
  9 | Ced       | cmorsey8@goo.gl            | 2021-09-18
 10 | Tommy     | tleipoldt9@sbwire.com      | 2022-04-05
(10 rows)

17/06/22에 등록한 사용자를 보고 싶지만 문제는 날짜 유형 필드에서 검색할 올바른 형식이 아니라는 것입니다.

따라서 ISO-8601 형식으로 변환해야 하므로 ISO-8601 형식에 해당하는 형식은 2022-06-17이 됩니다. 검색할 쿼리는 다음과 같습니다.

SELECT * 
FROM USERS
WHERE register::date = '2022-06-17';

출력:

 id | full_name |           email            |  register
----+-----------+----------------------------+------------
  1 | Trula     | ttawse0@washingtonpost.com | 2022-06-17
(1 row)

또한 날짜 유형에서 더 많은 기능을 시도할 수 있습니다. 예를 들어, date_trunc 기능.

SELECT * FROM USERS WHERE date_trunc('day', register) = '2022-06-17';

출력:

 id | full_name |           email            |  register
----+-----------+----------------------------+------------
  1 | Trula     | ttawse0@washingtonpost.com | 2022-06-17
(1 row)

다음은 또 다른 예제 쿼리입니다.

SELECT * FROM USERS WHERE date_trunc('month', register) = '2022-06-17';

출력:

 id | full_name | email | register
----+-----------+-------+----------
(0 rows)s

Postgres의 날짜에 대해 자세히 알아보려면 공식 문서를 방문하세요.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website