Problem:
Chcesz uzyskać aktualny czas w bazie danych PostgreSQL. Nie chcesz przesunięcia strefy czasowej.
Rozwiązanie:
Użyjemy funkcji LOCALTIME aby uzyskać aktualny czas bez przesunięcia strefy czasowej.
SELECT LOCALTIME;
Oto wynik zapytania:
22:15:51.987914
Dyskusja:
Funkcja PostgreSQL LOCALTIME zwraca aktualny czas na maszynie z uruchomionym PostgreSQL. Zwraca go jako typ danych czasu w 'gg:mm:ss.nnnnnn format. W tym formacie:
- 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ć czas z określoną dokładnością, użyj nawiasów z liczbą całkowitą od 0 do 6 jako argumentem. Spowoduje to zwrócenie czasu z żądaną liczbą ułamków sekund. Na przykład LOCALTIME(1) oznacza tylko jeden ułamek sekundy (tj. jedno miejsce po przecinku); 2 zwróci dwa miejsca itd. Wartość domyślna (bez nawiasów lub pustych nawiasów) to sześć, co jest również maksymalną liczbą ułamków sekund. Spójrz na następny przykład:
SELECT LOCALTIME(0) ;
Oto wynik zapytania:
21:12:06
Ten wynik nie zawiera ułamków sekund, ponieważ wstawiamy 0 jako argument.
LOCALTIME zwraca czas rozpoczęcia bieżącej transakcji. Różnica między LOCALTIME i CURRENT_TIME jest to, że LOCALTIME nie obejmuje przesunięcia strefy czasowej.