PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak uzyskać aktualną datę i godzinę z przesunięciem strefy czasowej w PostgreSQL?

Problem:

Chcesz uzyskać aktualną datę i godzinę z informacjami o strefie czasowej z bazy danych PostgreSQL.

Rozwiązanie:

Użyjemy CURRENT_TIMESTAMP lub NOW(), aby uzyskać bieżącą datę i godzinę z przesunięciem strefy czasowej.

SELECT CURRENT_TIMESTAMP ;

Oto wynik zapytania:

2019-09-15 13:13:12.118432+02

Dyskusja:

CURRENT_TIMESTAMP zwraca bieżącą datę, godzinę i przesunięcie strefy czasowej (używając daty, czasu i strefy czasowej maszyny, na której działa PostgreSQL). Jest to zwracane jako wartość w „RRRR-MM-DD gg:mm:ss.nnnnnn+/-tz” format. W tym formacie:

  • RRRR to rok 4-cyfrowy.
  • MM to miesiąc dwucyfrowy.
  • DD to dwucyfrowy dzień miesiąca.
  • hh to godzina dwucyfrowa.
  • mm to minuta dwucyfrowa.
  • ss to 2-cyfrowa sekunda.
  • nnnnnn określa liczbę ułamków sekund (tj. precyzję) od 0 do 6.
  • +tz lub -tz jest przesunięciem strefy czasowej, plusem lub minusem względem UTC.

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ą, możesz użyć opcjonalnego argumentu liczby całkowitej. Zwraca datę i godzinę z ułamkami sekund i przesunięciem strefy czasowej. Ten argument musi mieścić się w zakresie od 0 do 6; 0 to nie ułamek sekundy, 1 to ułamek sekundy (np. jedno miejsce po przecinku) itd. Spójrz na następny przykład:

SELECT CURRENT_TIMESTAMP(3) ;

Oto wynik zapytania:

2019-09-15 13:01:51.142+02

Ten wynik zawiera 3-cyfrowy ułamek sekundy, ponieważ umieściliśmy 3 jako argument w funkcji CURRENT_TIMESTAMP. Przesunięcie strefy czasowej nadal pojawia się na końcu.

Czas zwracany przez tę funkcję nie zmienia się podczas transakcji lub pojedynczego zapytania. Zawsze jest to czas rozpoczęcia transakcji.

NOW() jest podobna do CURRENT_TIMESTAMP funkcji i zwraca ten sam wynik. Różnica polega na tym, że CURRENT_TIMESTAMP jest standardową funkcją SQL, podczas gdy NOW() jest specyficzna dla PostgreSQL.

SELECT NOW() ;

Oto wynik zapytania:

2019-08-27 12:18:55.324145+02

Zauważ, że funkcja NOW() wymaga nawiasów. Możesz jednak pozostawić je puste i uzyskać wartość domyślną.

CURRENT_TIMESTAMP i NOW() zwracają sygnaturę czasową typ danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL wybiera najnowszy wpis dla danego identyfikatora

  2. Jak zmienić bazę danych na postgresql za pomocą Symfony 2.0?

  3. Czy PostgreSQL może indeksować kolumny tablicy?

  4. Idź postgresql LIKE zapytania

  5. Znajdź wiersze, w których tablica tekstowa zawiera wartość podobną do input