我真的需要存儲本地日期和時間(飛機輪子的日期和時間)和utc偏移量,所以我可以轉換爲utc來計算間隔(飛行時間)。人們在當地時間旅行,你需要utc進行跨時區計算。我曾希望使用時間戳,但它絕對是而不是爲此工作。它將一切轉換爲postgres時區的功能。在我的情況下,這是yyyy-dd-mm hh:mi:ss-07
。PostgreSQL時間戳和時間函數
但是,我調查timetz只是爲了涵蓋所有的基礎。它存儲我所需要的。它將偏移量提供給utc,同時保留當地時間。除了現在我需要兩列而不是一個來存儲信息。
我的問題是: 爲什麼timestamptz和timetz函數會給出不同的結果? 有沒有辦法使timestamptz包括本地時區偏移量而不是系統時區偏移量? 下面是說明差異的疑問:
select cast('2015-05-01 11:25:00 america/caracas' as timestamptz)
-- 2015-05-01 08:55:00-07
;
select cast('2015-05-01 11:25:00 america/caracas' as timetz)
-- 11:25:00-04:30
;
>>沒有爲timestamptz值存儲偏移量。他們只是現實世界的時間戳。 實際上存在一個偏移量;它是postgres位置設置的偏移量。在我的例子中,它是-7,因爲我的位置恰好在PDT中。 我仍然感到困惑。他們爲什麼打擾?爲什麼不把它存儲爲UTC並用它來完成?如果我想知道飛機從加拉加斯起飛的時間,我認爲沒有必要知道postgres實施的設置的偏移量。 – silves
我的第一個引用來自我關聯的文檔以回答所有這些問題;再讀一遍。他們*做*只是將其存儲爲UTC。當*以默認方式*轉換爲字符串時,它會在PDT中顯示它。這不是存儲在它。 –
我很困惑。西雅圖的時間是4:54,紐約的時間是7:54,倫敦是11:54。 – silves