sql >> Database >  >> RDS >> PostgreSQL

Postgres now() tijdstempel verandert niet, wanneer het script werkt

Van TFM, markeert de mijne:

9.9.4. Huidige datum/tijd

PostgreSQL biedt een aantal functies die waarden retourneren die gerelateerd zijn aan de huidige datum en tijd. Deze SQL-standaardfuncties retourneren allemaal waarden op basis van de starttijd van de huidige transactie :

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(precision)
CURRENT_TIMESTAMP(precision)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(precision)
LOCALTIMESTAMP(precision)

...

Aangezien deze functies de starttijd van de huidige transactie retourneren, veranderen hun waarden niet tijdens de transactie. Dit wordt als een functie beschouwd:het is de bedoeling dat een enkele transactie een consistent idee krijgt van de "huidige" tijd, zodat meerdere wijzigingen binnen dezelfde transactie hetzelfde tijdstempel dragen.

PostgreSQL biedt ook functies die de starttijd van de huidige instructie retourneren, evenals de werkelijke huidige tijd op het moment dat de functie wordt aangeroepen. De volledige lijst van niet-SQL-standaard tijdfuncties is:

transaction_timestamp()
statement_timestamp()
clock_timestamp()
timeofday()
now()

transaction_timestamp() is gelijk aan CURRENT_TIMESTAMP , maar heeft een naam om duidelijk weer te geven wat het teruggeeft. statement_timestamp() geeft de starttijd van de huidige instructie terug (meer specifiek de tijd van ontvangst van het laatste opdrachtbericht van de client).statement_timestamp() en transaction_timestamp() dezelfde waarde teruggeven tijdens het eerste commando van een transactie, maar kan verschillen tijdens volgende commando's. clock_timestamp() geeft de huidige huidige tijd terug , en daarom verandert de waarde ervan zelfs binnen een enkele SQL-opdracht. timeofday() is een historische PostgreSQL-functie. Likeclock_timestamp() , het retourneert de werkelijke huidige tijd, maar als een opgemaakte tekenreeks in plaats van een tijdstempel met tijdzonewaarde.now() is een traditioneel PostgreSQL-equivalent van transaction_timestamp() .




  1. Kopieer sqlite in Android Studio-items werkt niet

  2. Gegevensmigraties

  3. Vreemd SQLAlchemy-foutbericht:TypeError:'dict'-object ondersteunt geen indexering

  4. voorwaardelijk meedoen in mysql