Подтвердить что ты не робот

Postgresql - выберите что-то, где дата = "01/01/11"

У меня есть поле datetime в моем Postgresql, которое называется "dt". Я хотел бы сделать что-то вроде

SELECT * FROM myTable WHERE extract (date from dt) = '01/01/11'

Каков правильный синтаксис для этого?

Спасибо!

4b9b3361

Ответ 2

В PostgreSQL имеется ряд доступных функций даты/времени, см. здесь.

В вашем примере вы можете использовать:

SELECT * FROM myTable WHERE date_trunc('day', dt) = 'YYYY-MM-DD';

Если вы регулярно выполняете этот запрос, можно создать индекс, используя также функцию date_trunc:

CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc('day', dt) );

Одно из преимуществ этого заключается в большей гибкости при использовании часовых поясов, если это необходимо, например:

CREATE INDEX date_trunc_dt_idx ON myTable ( date_trunc('day', dt at time zone 'Australia/Sydney') );
SELECT * FROM myTable WHERE date_trunc('day', dt at time zone 'Australia/Sydney') = 'YYYY-MM-DD';