首先,我已經閱讀了很多關於使用時區或不使用時區的Postgres中的日期類型。看來用時區管理日期(時間戳)在99%的情況下是最好的。沒有時區的同步引擎或不在PostgreSQL中?
目前我已經建立了一個同步引擎,默認使用設置爲UTC時間的Rails應用程序(非常重要)和MariaDB管理日期(所以UTC日期寫入數據庫但沒有看到任何東西,除了日期:2017-04 -19 17:45:09)。同步到服務器引擎的設備也使用本地SQLite數據庫,日期爲UTC。因此,對於同一個文檔,我可以在SQLite字段和MariaDB字段中看到created_at字段的相同日期。它運作良好。
請注意,用戶不必在服務器應用程序和設備應用程序中設置自定義時區。我想要所有的UTC。
由於我計劃遷移到PostgreSQL有很多原因,我很確定我需要使用沒有時區的Timestamp,但是在讀完所有數據後我仍然有些疑惑。
對此用例有何建議?
EDIT:
測試1:
因此,我使用3次測試pgloader製成MariaDB的=>的PostgreSQL使用計算機默認時區
日期是相同的,但正如你所看到的,有時有+01,有時+02?
的Test2:MariaDB的=>使用的時區Postgres的
設置時區爲UTC後的PostgreSQL在這裏有+00,合乎邏輯的UTC,但我的日期發生變化。
Test3的:MariaDB的=>使用時間戳WITHOUT時區
所有相同那裏的PostgreSQL。
感謝喬的回答。 我使用工具pgloader進行了3次測試,而不是使用時區遷移數據。請看我的編輯。我懷疑。 –
@ alex.bour +01或+02是用於日光節約時間開始或結束之後的日期。在某一天之後的時間將從+1改變爲+2 正如你所看到的不是+或 - 任何意味着所顯示的數據完全是存儲的數據,所以當使用「沒有時區」時,它的返回正好是放入。在插入數據之前完成任何轉換。在「With timezone」中,轉換在插入時完成。也就是說,如果您在中心時間,並且存儲了時間戳,它將根據一年中的某一天以-6或-5結尾。 –
謝謝你詳細回覆Joe。開始使用PGSQL非常令人興奮。 –