2016-07-07 31 views
16
INSERT into Group (Name,CreatedDate) VALUES ('Test',UTC_TIMESTAMP(), 1); 

To jest zapytanie, którego użyłem dla mysql do wstawienia aktualnej daty. Kiedy używam tego w postgresql, dostaję poniżej błędu.Jak wstawić bieżącą datę i godzinę w zapytaniu wstawiania postgresql

HINT: No function matches the given name and argument types. You might need to add explicit type casts. 
********** Error ********** 

ERROR: function utc_timestamp() does not exist 
SQL state: 42883 

Próbowałem jak poniżej używając now() jednak jest wstawianie jak "2016-07-07 17:01:18.410677". Muszę wstawić w formacie 'yyyymmdd hh:mi:ss tt'.

Jak wstawić datę bieżącą w zapytaniu wstawiania postgresql w powyższym formacie?

+0

Może szukać 'CURRENT_TIMESTAMP'or nawet' NOW() '. istnieją co najmniej precyzyjne argumenty do tego pierwszego. Tak więc 'CURRENT_TIMESTAMP (3)' da 3 cyfry poddziałowe (milli sekunda rozdzielczość) – Dilettant

+1

... Formatowanie poprzez SET DATESTYLE np. at: [w postgres, czy możesz ustawić domyślne formatowanie znacznika czasu, według sesji lub globalnie?] (http://stackoverflow.com/questions/8723574/in-postgres-can-you-set-the-default-formatting -for-a-timestamp-by-session-or-g) lub w oficjalnych dokumentach PostgreSQL – Dilettant

+3

'kolumny timestamp' nie *** mają ***" format ". Każde widoczne formatowanie jest stosowane przez klienta SQL, którego używasz. Zmień konfigurację swojego klienta SQL lub użyj odpowiedniej funkcji formatowania, jeśli chcesz mieć inny format _display_. –

Odpowiedz

0

Można oczywiście sformatować wynik current_timestamp(). Proszę spojrzeć na różne funkcje formatowania w oficjalnym documentation.

24

timestamp (lub date lub time kolumny) zrobić NIE mieć "format".

Każde widoczne formatowanie jest stosowane przez klienta SQL, którego używasz.


Aby wstawić bieżącą użycie current_timestampas documented in the manual:

INSERT into "Group" (name,createddate) 
VALUES ('Test', current_timestamp); 

Do wyświetlacz tej wartości w innym formacie zmienić konfigurację klienta SQL lub sformatować wartość przy wyborze danych:

select name, to_char(createddate, ''yyyymmdd hh:mi:ss tt') as created_date 
from "Group" 

Dla psql (domyślny klient linii poleceń) można skonfigurować format wyświetlania za pomocą parametru konfiguracyjnego DateStyle: https://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-DATESTYLE

+0

Jeśli użyję tego, otrzymuję komunikat poniżej, ponieważ moja data jest formatem znacznika czasu. kolumna "createddate" jest typu timestamp bez strefy czasowej, ale wyrażenie jest typu tekstowego – Shesha

+0

@Shesha Nie używaj tego w zapytaniu 'insert'. W twoim 'insert' użyj' current_timestamp' –

Powiązane problemy