我們有兩個字段from
和to
(的datetime
型),用戶可以在其中存儲的開始時間和出差的結束時間,如「僅日期」的(有時)存儲困境:在日期時間
From: 2010-04-14 09:00
To: 2010-04-16 16:30
因此,行程的時間是2天和7.5小時。
通常,確切時間是事先不知道的,所以用戶輸入的日期無時間:
From: 2010-04-14
To: 2010-04-16
內部,這被存儲爲2010-04-14 00:00
和2010-04-16 00:00
,因爲這就是最現代的類庫(例如,.net)和數據庫(例如SQL Server)在將日期時間結構中的「僅限日期」存儲時執行此操作。通常情況下,這是非常合理的。
然而,進入2010-04-16
爲to
日期時,用戶顯然並沒有意味着2010-04-16 00:00
。相反,用戶的意思是2010-04-16 24:00
,即計算行程的持續時間應該輸出3 days
,而不是2 days
。
我可以想到這個問題的一些(或多或少是醜陋的)解決方法(如果用戶沒有輸入時間組件,則在to
字段的UI層中添加「23:59」;添加一個特殊的「日期如果時間分量爲「00:00」,則在數據庫中存儲「2010-04-17 00:00」,但向用戶顯示「2010-04-16 24:00」; ... ),都有優點和缺點。由於我認爲這是一個相當普遍的問題,我想知道:
- 有沒有解決它的「標準」最佳實踐方式?
- 如果沒有,您是否遇到類似的需求,您是如何解決這個問題的?解決方案的優缺點是什麼?
您是否僅使用這些日期來計算持續時間?如果是這樣,那麼你可以用'duration'替換'to'字段,例如'x小時y分鐘'。 AFAIK數據庫具有用於此目的的區間數據類型。 – Juris 2010-04-14 11:24:04