2013-06-06 8 views
33

Chcę wykonać kwerendy przy użyciu sysdate jak:Co to jest odpowiednik SYSDATE PostgreSQL z Oracle?

select up_time from exam where up_time like sysdate 

co jest możliwe w Oracle.

Wydaje się jednak, że PostgreSQL nie obsługuje sysdate. Nie mogłem znaleźć sysdate w dokumentacji postgres. Jaki jest zamiennik sysdate w PostgreSQL?

Odpowiedz

45

SYSDATE to funkcja wyłącznie Oracle.

Norma ANSI definiuje current_date lub current_timestamp który jest obsługiwany przez PostgreSQL i udokumentowane w instrukcji:
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

(Btw: Oracle obsługuje CURRENT_TIMESTAMP również)

Należy zwrócić uwagę na różnica między current_timestamp, statement_timestamp() i clock_timestamp() (co wyjaśniono w instrukcji, patrz powyższy link)


To stwierdzenie:

select up_time from exam where up_time like sysdate

nie czyni dowolny sensu. Ani w Oracle, ani w Postgres. Jeśli chcesz uzyskać wiersze z „Today”, trzeba coś takiego:

select up_time 
from exam 
where up_time = current_date 

pamiętać, że w Oracle będzie prawdopodobnie chcesz trunc(up_time) = trunc(sysdate) pozbyć część czasu, który jest zawsze zawarty w Oracle.

Powiązane problemy