問題是簡短的:如果我已經有一個列時間戳沒有時區的數據,如果我設置類型時間戳與時區,postgresql做什麼這個數據?PostgreSQL更改類型時間戳沒有時區 - >與時區
39
A
回答
38
它保留在本地時間的電流值,並設置時區,以你的本地時間的偏移:
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
按照手冊Alter Table:省略
如果[的使用條款是] ,默認轉換與從舊數據類型轉換爲新轉換的賦值相同。
根據無時間區和時間戳與時區時間戳之間的手冊Date/Time types
換算通常假定時間戳而不時區值應取或作爲給定當地時間時區。可以使用
AT TIME ZONE
爲轉換指定不同的時區。
+0
是的。此行爲與從不帶時區的時間戳到具有時區的時間戳一起轉換完全相同。如果你想要一些不同的東西,你可以使用'ALTER COLUMN column TYPE type'使用
12
明確指定時區會更好。假設您的時間戳記應該在UTC(但沒有時區),那麼您應該警惕客戶端或服務器的時區可能會在這裏搞亂一切。相反寫:
ALTER TABLE a ALTER COLUMN t TYPE TIMESTAMP WITH TIME ZONE USING t AT TIME ZONE 'UTC'
相關問題
- 1. django - 時間戳隨機更改時區
- 2. psycopg2處理時間戳沒有時區
- 3. 休眠映射postgresql「沒有時區的時間戳」?
- 4. 的PostgreSQL:42883操作符不存在:沒有時間戳時區
- 5. postgresql:無時區時間戳的時區敏感查詢
- 6. 帶時區時間戳的時間戳
- 7. GMT時區當前時間戳與當地時區當前時間戳有什麼區別?
- 8. 將日期和時區與Postgresql中的時間戳比較
- 9. 如何在PHP中爲現有時間戳更改時區?
- 10. JPQL和時間戳與時區
- 11. 與UNIX時間戳和時區
- 12. 時間戳和時區
- 13. 時間戳/時區/ PHP/MySQL
- 14. PostgreSQL中具有不同時區的時間戳
- 15. PostgreSQL:如何測試時間戳是否有時區?
- 16. PostgreSQL中的時間戳操作 - 帶小時/時區的問題
- 17. ERROR:合併類型BYTEA和時間戳沒有時區不能匹配
- 18. 如何將沒有時區的時間轉換爲沒有時區的時間戳?
- 19. PostgreSQL:將沒有時區的時間戳轉換爲特定的時區不起作用
- 20. 帳戶時區時,UNIX時間戳
- 21. 根據瀏覽器時區更改jenkins時間戳
- 22. 如何將時間戳更改爲我在mysql中的時區?
- 23. 在Postgresql中檢索帶時區的時間戳 - 簡單
- 24. 保留來自postgresql時間戳的時區信息go
- 25. Postgresql選擇帶時區的時間戳,但忽略秒
- 26. 比較PostgreSQL的時間戳的SQL查詢時區在Django
- 27. 更改時區
- 28. 更改時區
- 29. ç時間戳區別
- 30. Java - 沒有得到一個特定時區的時間戳
你是對的,但直到我啓動我的應用程序/數據庫/無論什麼,答案可能會出現。 – gyorgyabraham 2012-03-19 15:23:54
@a_horse_with_no_name因爲「它曾經工作過」是一個非常糟糕的方式來知道它會做什麼每次! – 2012-03-20 10:51:15
@couling:所以你暗示如果多次運行同一組語句會產生不同的結果?即使所有輸入參數都相同?在這種情況下,dbhenur的答案不能證明任何事情,因爲根據你運行該聲明,一次不能保證它下次將以相同的方式工作。 – 2012-03-20 11:44:04