Verwenden Sie die Where-Klausel im Datumsfeld mit PostgreSQL

Shihab Sikder 20 Juni 2023
Verwenden Sie die Where-Klausel im Datumsfeld mit PostgreSQL

Dieses Tutorial zeigt uns, wie man die Abfrage WHERE im Feld date durchführt. Es gibt mehrere Formate der Datum-Darstellung; Im Allgemeinen wird es als string oder varchar zurückgegeben.

Manchmal tritt der Formatfehler auf. Alles, was Sie tun müssen, ist, die Spalte mit cast() in einen date-Typ umzuwandeln und sie dann in der where-Klausel zu verwenden.

Verwenden Sie die WHERE-Klausel im Date-Feld mit PostgreSQL

Nehmen wir an, Sie haben eine Tabelle Benutzer und sie hat ein Feld, das Datum enthält.

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;

Ausgang:

 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)

Nehmen wir an, wir möchten einen Benutzer sehen, der sich am 17/06/22 registriert hat, aber das Problem ist, dass es nicht das richtige Format für die Suche im Feld Datum ist.

Wir müssen es also in das Format ISO-8601 konvertieren, sodass das Äquivalent des Formats ISO-8601 2022-06-17 lautet. Hier ist die zu suchende Abfrage:

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

Ausgang:

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

Sie können auch weitere Funktionen vom Typ Datum ausprobieren. Zum Beispiel die Funktion date_trunc.

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

Ausgang:

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

Hier ist eine weitere Beispielabfrage:

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

Ausgang:

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

Um mehr über das Datum in Postgres zu erfahren, besuchen Sie die offizielle Dokumentation.

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