PostgreSQL を使用して日付フィールドで Where 句を使用する
Shihab Sikder
2023年6月20日
PostgreSQL
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 の詳細については、公式の ドキュメント を参照してください。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Shihab Sikder
