Postgres where mệnh đề so sánh dấu thời gian


79

Tôi có một bảng trong đó cột có kiểu dữ liệu timestamp

Trong đó chứa nhiều bản ghi cho một ngày, tôi muốn chọn tất cả các hàng tương ứng với ngày

Tôi phải làm nó như thế nào?


1
Không có datetimeloại nào trong Postgres. Có timestamp, có và không có múi giờ.
ypercubeᵀᴹ

Câu trả lời:


137

Giả sử bạn thực sự muốn nói timestampvì không có datetimetrong Postgres

Truyền cột dấu thời gian đến một ngày, điều này sẽ xóa phần thời gian:

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

Điều này sẽ trả về tất cả các hàng từ ngày 15 tháng 7.

Lưu ý rằng ở trên sẽ không sử dụng chỉ mục trên the_timestamp_column. Nếu hiệu suất là quan trọng, bạn cần tạo chỉ mục trên biểu thức đó hoặc sử dụng điều kiện phạm vi:

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
ước gì tôi có đọc phần thứ hai trước khi trình các truy vấn phong cách đầu tiên vào một bảng lớn ...
Palace Chan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.