Postgres, де речення порівнює мітку часу


79

У мене є таблиця, де стовпець має тип даних timestamp

Який містить записи, кілька записів за день. Я хочу вибрати всі рядки, що відповідають дню

Як це зробити?


1
У datetimePostgres немає типу. Є timestamp, з часовим поясом і без нього.
ypercubeᵀᴹ

Відповіді:


137

Якщо припустити, що ви насправді маєте на увазі, timestampбо datetimeв Postgres його немає

Передайте стовпець мітки часу на дату, яка видалить часову частину:

select *
from the_table
where the_timestamp_column::date = date '2015-07-15';

Це поверне всі рядки з 15 липня.

Зверніть увагу, що вищевказане не використовуватиме індекс на the_timestamp_column. Якщо продуктивність є критичною, вам потрібно або створити індекс для цього виразу, або використовувати умову діапазону:

select *
from the_table
where the_timestamp_column >= timestamp '2015-07-15 00:00:00'
  and the_timestamp_column < timestamp '2015-07-16 00:00:00';

1
хоч би я прочитав другу частину до того, як подати перший запит стилю на великий стіл ...
Палац Чан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.