Problem:
Chcesz uzyskać aktualną datę i godzinę w bazie danych PostgreSQL. Nie potrzebujesz przesunięcia strefy czasowej.
Rozwiązanie:
Użyjemy funkcji LOCALTIMESTAMP
aby uzyskać aktualną datę i godzinę bez informacji o strefie czasowej:
SELECT LOCALTIMESTAMP ;
Oto wynik zapytania:
2019-09-24 20:10:58.977914
Dyskusja:
Funkcja PostgreSQL LOCALTIMESTAMP
zwraca bieżącą datę i godzinę (komputera, na którym działa ta instancja PostgreSQL) jako znacznik czasu wartość. Używa ciągu „RRRR-MM-DD gg:mm:ss.nnnnnnn ' format, gdzie:
- RRRR to rok 4-cyfrowy.
- MM to miesiąc dwucyfrowy.
- DD to dwucyfrowy dzień.
- hh to dwucyfrowa godzina.
- mm to minuta dwucyfrowa.
- ss to 2-cyfrowa sekunda.
- nnnnnn są ułamkami sekund (od zera do 6-cyfrowej precyzji).
Jak zauważyłeś, ta funkcja nie ma nawiasów. Jeśli jednak chcesz wyświetlić datę i godzinę z określoną dokładnością, umieść liczbę całkowitą od 0 do 6 jako argument w nawiasach. Spowoduje to zwrócenie daty i godziny z żądaną liczbą ułamków sekund. Na przykład LOCALTIMESTAMP(1)
oznacza tylko jeden ułamek sekundy (tj. jedno miejsce po przecinku); 2 zwróci dwa miejsca itd. Domyślna precyzja to 6, co jest również maksymalną liczbą ułamków sekund; oto, co otrzymasz, jeśli w ogóle nie użyjesz nawiasów. Spójrz na następny przykład:
SELECT LOCALTIMESTAMP(0) ;
Oto wynik zapytania:
2019-09-24 20:10:58
Ten wynik nie zawiera ułamków sekund, ponieważ jako argument wstawiamy 0.
Ta funkcja zwraca czas rozpoczęcia bieżącej transakcji. Różnica między LOCALTIMESTAMP
i CURRENT_TIMESTAMP
jest to, że LOCALTIMESTAMP
nie obejmuje przesunięcia strefy czasowej.