PostgreSQL を使用して日付フィールドで Where 句を使用する
Shihab Sikder
2023年6月20日
このチュートリアルでは、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