2015-11-20 57 views
3

我正在做timetabling的東西。在鐵路時間表中,如果服務從一天開始到下一天結束,那麼約定是使用+24小時的時鐘。所以如果在早上6點到達,它會從上一個開始日期的三點鐘開始。這個日期可以是,在這種情況下是在一個單獨的表格中,所以不能合併。我可以有超過24小時postrgres時間

難道我將不得不將其存儲在幾秒鐘內將其轉換回輸出到本機導出格式,它預計+24小時時鐘格式,並且還對UI。如果這意味着將東西從週四1月份存儲爲TimeDate,那麼我寧願只使用一個整數並在我的應用程序中創建一個虛擬類型。

還是有一個簡單的方法來放鬆此24:00最大的時間字段。

回答

4

這聽起來像你想的interval類型。

當時間來講有三種類型的時間(所有這些都有令人驚訝的複雜性):

  • 的具體時間。時間戳。
  • A持續時間
  • 時間間隔(兩個特定時間之間的時間..類似於上面但不同)。

在這種情況下,Postgres使用interval來表示持續時間(但在許多時間庫中存在差異,例如Joda ...即一年並非總是一年)。

-1

馬克 -

這聽起來像它可能是一個挑戰習慣 - 我從來沒有聽說過那種時刻保持之前的!有了這個說法,我不會嘗試在數據庫字段的圓孔中強制插入一個方形釘。相反,我會使用您的應用程序來跟蹤您希望如何顯示時間,並允許數據庫執行最佳時間戳記。時間戳通常以時代形式(秒數)存儲,因此按正常方式存儲您的時間,並創建包裝/幫助功能,以向用戶顯示您的+24小時制時間格式。

2

你最好的選擇是這樣的信息存儲爲一個interval。如果您打算按分鐘記錄到達時間,您也可以使用interval minute。時間間隔可以採用任何(合理的)值,因此30:00完全有效,表示抵達是在某個起點(出發或預計出發日期的午夜,取決於您的邏輯)後30小時。由於一個interval是一個內置的數據類型,你可以簡單地把它添加到其他date S或timestamp S和獲得在數據庫和UI層面有意義的結果。