PostgreSQL を使用して日付フィールドで Where 句を使用する

Shihab Sikder 2023年6月20日
PostgreSQL を使用して日付フィールドで Where 句を使用する

このチュートリアルでは、date フィールドで WHERE クエリを実行する方法を説明します。 date 表現にはいくつかの形式があります。 通常、string または varchar として返されます。

フォーマットエラーが時々発生します。 cast() を使用して列を date 型にキャストし、それを where 句内で使用するだけです。

PostgreSQL を使用して Date フィールドで WHERE 句を使用する

Users テーブルがあり、date を含むフィールドがあるとします。

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 に登録したユーザーを見たいとしますが、問題は date 型フィールドで検索するための正しい形式ではないことです。

したがって、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 型からさらに多くの関数を試すことができます。 たとえば、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 の date の詳細については、公式の ドキュメント を参照してください。

著者: Shihab Sikder
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