2013-06-06 35 views
33

Tôi muốn thực hiện một truy vấn sử dụng sysdate như:Tương đương PostgreSQL của SYSDATE từ Oracle là gì?

select up_time from exam where up_time like sysdate 

mà có thể trong Oracle.

Tuy nhiên, có vẻ như PostgreSQL không hỗ trợ sysdate. Tôi không thể tìm thấy sysdate trong tài liệu postgres. Việc thay thế cho sysdate trong PostgreSQL là gì?

Trả lời

45

SYSDATE là chức năng duy nhất của Oracle.

Tiêu chuẩn ANSI định nghĩa current_date hoặc current_timestampđược hỗ trợ bởi Postgres và tài liệu trong cuốn hướng dẫn:
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

(Btw: Oracle hỗ trợ CURRENT_TIMESTAMP cũng)

Bạn nên chú ý đến các sự khác biệt giữa current_timestamp, statement_timestamp()clock_timestamp() (được giải thích trong sách hướng dẫn, xem liên kết ở trên)


Tuyên bố này:

select up_time from exam where up_time like sysdate

Không làm bất kỳ ý nghĩa gì cả. Không phải trong Oracle cũng như trong Postgres. Nếu bạn muốn nhận được hàng từ "hôm nay", bạn cần một cái gì đó như:

select up_time 
from exam 
where up_time = current_date 

Lưu ý rằng trong Oracle có thể bạn sẽ muốn trunc(up_time) = trunc(sysdate) để thoát khỏi phần thời gian đó luôn bao gồm trong Oracle.

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