Use la cláusula Where en el campo de fecha usando PostgreSQL

Shihab Sikder 20 junio 2023
Use la cláusula Where en el campo de fecha usando PostgreSQL

Este tutorial nos enseñará a realizar la consulta DÓNDE en el campo fecha. Existen varios formatos de representación de fecha; generalmente, regresa como una cadena o varchar.

A veces se produce el error de formato. Todo lo que necesita hacer es usar cast() para convertir la columna como un tipo de fecha y luego usarla dentro de la cláusula where.

Use la cláusula WHERE en el campo Date usando PostgreSQL

Supongamos que tiene una tabla de Usuarios y tiene un campo que contiene fecha.

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;

Producción :

 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)

Digamos que queremos ver un usuario que se registró el 17/06/22, pero el problema es que no es el formato correcto para buscar en el campo de tipo fecha.

Entonces necesitamos convertirlo al formato ISO-8601, por lo que el equivalente del formato ISO-8601 será 2022-06-17. Aquí está la consulta para buscar:

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

Producción :

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

Además, puedes probar más funciones desde el tipo fecha. Por ejemplo, la función date_trunc.

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

Producción :

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

Aquí hay otra consulta de ejemplo:

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

Producción :

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

Para saber más sobre la fecha en Postgres, visite la documentación oficial.

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