2015-07-15 29 views
17

Tôi có một bàn nơi cột là của datatype timestampPostgres mệnh đề where so sánh timestamp

nào chứa các bản ghi nhiều kỷ lục 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

Làm thế nào để làm điều đó?

+1

Không có loại 'datetime' trong Postgres. Có 'dấu thời gian', có và không có múi giờ. –

Trả lời

39

Giả sử bạn thực sự có nghĩa timestamp vì không có datetime trong Postgres

Cast cột dấu thời gian để hẹn hò, mà sẽ xóa phần thời gian:

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

này sẽ trả lại 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 phải 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

Trong mệnh đề where, tôi phải chuyển vị trí của '=' và '>' 'trong đó the_timestamp_column> = timestamp' – Manoj

+0

@Manoj: vâng, tất nhiên, cảm ơn. –

+0

Giải pháp tuyệt vời .... Nó hoạt động –

Các vấn đề liên quan