Verwenden Sie die Where-Klausel im Datumsfeld mit PostgreSQL

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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