Wat is het PostgreSQL-equivalent van SYSDATE van Oracle?

Ik wil een query uitvoeren met sysdate zoals:

select up_time from exam where up_time like sysdate

wat mogelijk is in Oracle.

Het lijkt er echter op dat PostgreSQL sysdate niet ondersteunt. Ik kon sysdate niet vinden in de postgres-documentatie. Wat is de vervanging voor sysdate in PostgreSQL?


Antwoord 1, autoriteit 100%

SYSDATEis alleen een Oracle-functie.

De ANSI-standaard definieert current_dateof CURRENT_TIMESTAMPdie wordtondersteund door Postgres en gedocumenteerd in de handleiding:
http://www.postgresql.org/ docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

(Btw: Oracle ondersteunt ook CURRENT_TIMESTAMP)

Let op het verschil tussen CURRENT_TIMESTAMP, statement_timestamp()en clock_timestamp()(dit wordt uitgelegd in de handleiding, zie de bovenstaande link)


Het deel where up_time like sysdategeenzin heeft. Noch in Oracle, noch in Postgres. Als je rijen van “vandaag” wilt krijgen, heb je zoiets nodig als:

select up_time 
from exam 
where up_time = current_date

Houd er rekening mee dat u in Oracle waarschijnlijk wilt dat trunc(up_time) = trunc(sysdate)het tijdsdeel verwijdert dat altijd in Oracle zit.


Antwoord 2, autoriteit 12%

NOW()is de vervanging van Oracle Sysdate in Postgres.

Probeer “Selecteer nu()“, dit geeft je de tijdstempel van het systeem.


Antwoord 3, autoriteit 9%

De volgende functies zijn beschikbaar om de huidige datum en/of tijd in PostgreSQL te verkrijgen:

CURRENT_TIME
CURRENT_DATE
CURRENT_TIMESTAMP

Voorbeeld

SELECT CURRENT_TIME;
08:05:18.864750+05:30
SELECT CURRENT_DATE;
2020-05-14
SELECT CURRENT_TIMESTAMP;
2020-05-14 08:04:51.290498+05:30

postgresql-documenten


Antwoord 4, autoriteit 3%

Misschien wilt u statement_timestamp()gebruiken. Dit geeft het tijdstempel waarop de instructie is uitgevoerd. Terwijl NOW()en CURRENT_TIMESTAMPhet tijdstempel geven waarop de transactie is gestart.

Meer details in de handleiding

Other episodes