在MySQL中,我可以創建一個帶有時間字段的表,並且該值可以高達838:59:59(839小時 - 1秒)。我剛剛在PostgreSQL中讀到,小時字段不能超過23:00:00(24小時)。有沒有解決的辦法?我試圖製作一個簡單的數據庫,用於跟蹤分鐘花費的時間,因此它需要花費幾分鐘的時間才能超過23小時。我可以在MySQL中做到這一點,但我需要使用PostgreSQL。我谷歌搜索,但沒有找到我在找什麼,所以我希望我只是沒有使用正確的關鍵字。PostgreSQL中超過23:59:59的時間?
回答
儘管它們使用相同的符號,但是一天中的時間與已用時間之間存在差異。它們的一些值重疊,但它們是不同的域。如果您正在討論一天中的某個時間,則838不是一小時內的有效值。 838 是如果您正在討論已用時間,則爲一小時的有效值。
這種區別導致兩種不同的數據類型:timestamp and interval。
create table intervals (
ts timestamp primary key,
ti interval not null
);
insert into intervals values (current_timestamp, '145:23:12');
select *
from intervals;
2011-08-03 21:51:16.837 145:23:12
select extract(hour from ti)
from intervals
145
我相信你是對的,但它不應該成爲一個問題。建議存儲UNIX時間整數,以便當您「插入」並再次出來時,然後將增量添加到int字段。
這將產生花費的秒數,可以將其平均翻譯爲小時:分:秒格式。
可以通過從結束時間戳中減去開始時間戳來計算增量(差異)。
我希望避免這樣做,如果可以的話,但它聽起來像這是做到這一點的最佳方式。 – Forrest
Mmn,對不起。但是,時間戳範例很容易處理,並且可以輕鬆地從任何編程語言中操作......支持整數,我的意思是。一旦你習慣了它,它會感覺很好,並且增加一定的時間就像(僞代碼示例)var +(1 * 60 * 60)一樣容易,這會增加一個小時。祝你好運。 –
不,你只需要使用INTERVAL數據類型。 –
你可以使用一個日期時間字段...839小時正對順序34.9天東西...
您輸入什麼日期時間值來表示839小時,以及您爲什麼要這樣做,而不是使用專門用於表示間隔的數據類型? –
Postgres有沒有「時域」 - 它有幾個date/time types其服務於不同的需求。我認爲最適合您需要的類型是INTERVAL
。
- 1. PostgreSql刪除時間超出
- 2. 遠程連接Postgresql的超時時間
- 3. android中的超時時間過長?
- 4. SQL時間超過
- 5. python鏈表超時時間超過
- 6. PostgreSQL:會話超時?
- 7. 如何在PostgreSQL中爲獨佔鎖定設置超時時間
- 8. 如果加載時間超過一定時間,Android超時webview
- 9. 錯誤:Postgresql中的日期/時間字段值超出範圍
- 10. PostgreSQL的:通過與時間戳
- 11. PostgreSQL中的時間分隔
- 12. 執行時間超過
- 13. 比較超過24小時的時間
- 14. 滯後計算超過PostgreSQL中
- 15. select()有時會阻塞超過所提供的超時時間
- 16. PostgreSQL的時間戳
- 17. PostgreSQL的時間戳
- 18. Postgresql npgsql首次連接時間過長
- 19. 錯誤#1502:腳本執行時間超過默認的15秒超時時間
- 20. 檢查時間在數據庫中超過特定時間
- 21. PHP執行時間超過max_execution_time ...有時
- 22. 在postgresql中計算時間
- 23. 使用相同參數的Postgresql超過
- 24. Postgresql搜索超過閾值的項目
- 25. 最大的執行時間超過
- 26. Cloudflare等待超過20秒的時間
- 27. buglife SPOJ時間超過限制的Java
- 28. 簡單的代碼超過時間
- 29. Process.TotalProcessorTime超過實際的時間傳遞
- 30. 超過Hackerrank的時間限制
現在,這聽起來像它正是我想要的。謝謝! – Forrest