在數據庫中是否有任何可能,什麼時候我應該存儲爲GMT時間戳。如果是這樣,請分享我。格林威治標準時間時間在數據庫
回答
對於PostgreSQL,你的表應該有timestamp with time zone
型(timestamptz
的簡稱)這樣的柱:
CREATE TABLE tbl (id serial, ts timestamptz);
如果你想儲存什麼(我們稱之爲my_ts
)是...
一個本地
timestamp without time zone
,即它的timezone
在當前設置一致客戶端:
插入原樣,一切都將被保存爲UTC內部自動:INSERT INTO tbl (ts) VALUES my_ts'
一個
timestamp with time zone
:
插入的是,一切都在內部自動保存爲UTC:INSERT INTO tbl (ts) VALUES my_ts;
一個
timestamp without time zone
但是從另一個時區:
說,你得到timestamp without time zone
值fr om奧運倫敦,但你的客戶認爲你在不同的時區。變換的時間戳與AT TIME ZONE
結構:INSERT INTO tbl (ts) VALUES my_ts AT TIME ZONE 'Europe/London';
如果您使用的時區的名稱(而不是一個時區的縮寫,BST
在這種情況下),DST(夏令時間)的規則自動應用。詳情請見related question。
更多關於timestamp handling in PostgreSQL in this related answer。現在
,如果你想顯示tbl.ts
爲UTC(〜GMT)timestamp without time zone
,不管你當前時區的,檢索值是這樣的:
SELECT ts AT TIME ZONE 'UTC' FROM tbl;
注意AT TIME ZONE
有不同效果適用於timestamptz
時比timestamp
! Read the manual carefully。
感謝您的闡述 - 可能會刪除我的答案,因爲您已經更全面地介紹了答案。數據庫中的時間很複雜,呃。 –
時間在timestamp with time zone
(和舊式timestamp
,但你不應該一般使用)始終以PostgreSQL中的UTC(「GMT」)存儲。它們被轉換爲UTC格式並從UTC格式顯示。如果你希望他們被視爲UTC的輸入和輸出:
SET timezone = 'UTC'
在每個會話
,或者設置在數據庫或用戶級帕拉姆。如果您的應用程序在UTC以外的時區,則必須發送符合時區的所有時間戳;你已經告訴系統「本地時間」是UTC。
的AT TIME ZONE
結構可以,如果你希望明確的時間戳轉換爲默認值以外的時間段,比如有用:
regress=# SELECT TIMESTAMP '2012-01-01 00:00:00 UTC' AT TIME ZONE '+08:00';
timezone
------------------------
2012-01-01 16:00:00+08
(1 row)
http://dev.mysql.com/doc/refman/5.5/en/datetime.html
MySQL的TIMESTAMP值從當前時間轉換從UTC到 存儲區,並從UTC返回到當前時區進行檢索。 (對於DATETIME等其他類型不會發生這種情況。)默認情況下,每個連接的當前時區爲服務器的時間。
您正在查找的關鍵字是UTC而不是GMT(「對於大多數常見目的,UTC與GMT同義,但GMT不再由科學界精確定義。」,wikipedia)。
對於MySQL,您可以使用CONVERT_TZ()函數(請注意手冊中關於命名時區的警告,如果設置不正確,它可能會中斷查詢)。
只需謹慎一點:在MySQL和您的應用程序之間使用時區轉換沒有100%可靠的方法(請參閱my blog post about mysql time zone conversions以詳細瞭解這是爲什麼)。最好將UTC日期時間字符串直接傳遞給MySQL(例如,通過在應用程序本身中進行轉換)。如果您需要可靠性,您幾乎總是最終將日期時間存儲在使用UTC格式的日期字符串的DATETIME字段中。
- 1. 格林威治標準時間與格林威治標準時間之間的時差現在格林威治標準時間和2013年1月1日gmt
- 2. 獲得格林威治標準時間
- 3. 格林威治標準時間偏移
- 4. 從格林威治標準時間格式中刪除時間
- 5. 不能將時間轉換爲格林威治標準時間
- 6. 如何獲得格林威治標準時間格式在iOS6
- 7. 格林威治標準時間格式轉換爲POSIXct
- 8. 轉換日期/時間格林尼治標準時間格林尼治標準時間使用Javascript
- 9. 從格林威治標準時間和用戶時區計算時間
- 10. PHP strtotime格林威治標準時間轉換錯誤日期?
- 11. 更改悉尼日期格林威治標準時間到PHP
- 12. 與格林威治標準時間解析的意外結果
- 13. 將格林威治標準時間轉換爲EST
- 14. Gmdate()總是10分鐘實際格林威治標準時間
- 15. PHP日期/格林威治標準時間
- 16. NSDate返回格林威治標準時間
- 17. NSDateFormatter給我回格林威治時間
- 18. PHP - 轉換格林威治時間
- 19. 我想顯示的時間格林威治標準時間從(1800 + 0100)
- 20. SQL:從格林威治標準時間到太平洋查詢時間戳
- 21. DateTimeOffset存儲爲格林威治標準時間轉換爲中央時間
- 22. 將格林尼治標準時間轉換爲當地時間
- 23. 當地時間與格林尼治標準時間
- 24. 轉換日期與時間爲格林尼治標準時間
- 25. 格林尼治標準時間格式整數格式
- 26. 東部和格林威治標準時間之間的轉換錯誤
- 27. 世界時使用格林威治標準時間(GMT)的原因是什麼
- 28. 使用AT TIME ZONE格林威治標準時間時區轉換器
- 29. 將UTC日期時間轉換爲格林威治標準時間的功能時間在德爾福XE5
- 30. 如何格式化沒有格林威治標準時間的JSON日期
一個例子會有很大的幫助。 – hjpotter92
如果我給5.4.12 PM IST意味着它應該存儲爲12.4.12 PM GMT – Bathakarai
時間轉換表如何?只有很多時區。所有你需要觀看的是夏令時。 – Fionnuala