Z TFM, podkreśla moje:
9.9.4. Aktualna data/godzina
PostgreSQL udostępnia szereg funkcji, które zwracają wartości związane z bieżącą datą i godziną. Te standardowe funkcje SQL wszystkie zwracają wartości na podstawie czasu rozpoczęcia bieżącej transakcji :
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(precision)
CURRENT_TIMESTAMP(precision)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(precision)
LOCALTIMESTAMP(precision)
...
Ponieważ te funkcje zwracają czas rozpoczęcia bieżącej transakcji, ich wartości nie zmieniają się podczas transakcji. Jest to uważane za cechę:celem jest umożliwienie pojedynczej transakcji posiadania spójnego pojęcia „bieżącego” czasu, tak aby wielokrotne modyfikacje w ramach tej samej transakcji miały ten sam znacznik czasu.
PostgreSQL udostępnia również funkcje, które zwracają czas rozpoczęcia bieżącej instrukcji, a także aktualny czas w chwili wywołania funkcji. Pełna lista funkcji czasowych niestandardowych SQL:
transaction_timestamp()
statement_timestamp()
clock_timestamp()
timeofday()
now()
transaction_timestamp()
jest odpowiednikiem CURRENT_TIMESTAMP
, ale ma nazwę, która wyraźnie odzwierciedla to, co zwraca. statement_timestamp()
zwraca czas rozpoczęcia bieżącej instrukcji (dokładniej, czas odebrania ostatniej wiadomości polecenia od klienta).statement_timestamp()
i transaction_timestamp()
zwraca tę samą wartość podczas pierwszego polecenia transakcji, ale może różnić się podczas kolejnych poleceń. clock_timestamp()
zwraca aktualny aktualny czas , a zatem jego wartość zmienia się nawet w ramach pojedynczego polecenia SQL. timeofday()
jest historyczną funkcją PostgreSQL. Jakclock_timestamp()
, zwraca aktualny czas, ale jako sformatowany ciąg tekstowy, a nie znacznik czasu z wartością strefy czasowej.now()
to tradycyjny PostgreSQL odpowiednik transaction_timestamp()
.