La domanda è breve: se ho già dati in un timestamp di tipo colonna senza fuso orario, se imposto il tipo in timestamp con fuso orario, cosa fa postgresql con questi dati?PostgreSQL modifica il timestamp di tipo senza fuso orario -> con fuso orario
risposta
Mantiene il valore corrente in localtime e imposta il fuso orario per il tuo localtime offset:
create table a(t timestamp without time zone, t2 timestamp with time zone);
insert into a(t) values ('2012-03-01'::timestamp);
update a set t2 = t;
select * from a;
t | t2
---------------------+------------------------
2012-03-01 00:00:00 | 2012-03-01 00:00:00-08
alter table a alter column t type timestamp with time zone;
select * from a;
t | t2
------------------------+------------------------
2012-03-01 00:00:00-08 | 2012-03-01 00:00:00-08
Secondo il manuale per Alter Table:
se [la clausola USING è] omesso , la conversione predefinita è la stessa di un cast di assegnazione dal vecchio tipo di dati a nuovo.
Secondo il manuale per Date/Time types
conversioni tra timestamp senza fuso e timestamp with time zone considerato i timestamp senza fuso valore deve essere preso o dato come fuso orario ora locale. È possibile specificare un fuso orario diverso per la conversione utilizzando
AT TIME ZONE
.
Sì. Questo comportamento è esattamente lo stesso del lancio di timestamp senza fuso orario su timestamp con fuso orario. Se desideri qualcosa di diverso, puoi utilizzare la colonna "ALTER COLUMN TYPE type USING
È meglio specificare il fuso orario in modo esplicito. Supponi che, se il tuo timestamp dovesse essere in UTC (ma senza fuso orario), dovresti essere cauto sul fatto che il fuso orario del client o del server potrebbe significare tutto qui. Invece scrivi:
ALTER TABLE a ALTER COLUMN t TYPE TIMESTAMP WITH TIME ZONE USING t AT TIME ZONE 'UTC'
- 1. Fuso orario con PostgreSQL
- 2. timestamp con la mappatura PostgreSQL fuso orario
- 3. Data PostgreSQL() con fuso orario
- 4. Preserve fuso orario in PostgreSQL timestamptz tipo
- 5. Offset fuso orario locale in PostgreSQL
- 6. Modifica del fuso orario dei dati
- 7. strptime con fuso orario
- 8. regolare il fuso orario
- 9. PHP Data timestamp al fuso orario dell'utente
- 10. git: fuso orario e timestamp formato
- 11. Converti timestamp Unix in fuso orario?
- 12. specificare il fuso orario di output cqlsh
- 13. Modifica del fuso orario senza modificare il tempo in Java
- 14. Convertire fuso orario locale a PST fuso orario in C#
- 15. javascript Data fuso orario
- 16. Java GregorianCalendar Fuso orario
- 17. Python Fuso orario conversione
- 18. Formato Android con fuso orario
- 19. Strano comportamento con fuso orario
- 20. git commit fuso orario
- 21. H2 predefinito fuso orario
- 22. SQLAlchemy Come caricare le date con fuso orario = UTC (date memorizzati senza fuso orario)
- 23. ottenere fuso orario dell'utente
- 24. fuso orario russo cambia
- 25. conversione fuso orario Silverlight
- 26. Fuso orario per Firebase.ServerValue.TIMESTAMP
- 27. Griglia Kendo Modifica automatica Fuso orario
- 28. Modifica del fuso orario in MSYS
- 29. hibernate 5 + ZonedDateTime + postgresql inlcude fuso orario e lo scostamento
- 30. Formato stringa su datetime con fuso orario
Hai ragione, ma fino a quando accendo la mia applicazione/db/qualunque, la risposta potrebbe venire. – gyorgyabraham
@a_horse_with_no_name perché "ha funzionato una volta" è un modo molto CATTIVO per sapere cosa farà ogni volta! –
@couling: quindi stai insinuando che lo stesso insieme di istruzioni produrrà risultati diversi se eseguito più volte? Anche se tutti i parametri di input sono uguali? In tal caso, la risposta di dbhenur non proverebbe nulla perché, secondo te, eseguire questa affermazione una volta non garantisce che funzionerà allo stesso modo la volta successiva. –