2013-06-27 99 views
-1

我正面臨這個問題。當我從網站打包時,我總是會獲得0:00h或0:30h的例子。這在技術上是在當前日期的開始。但是對於人類來說,是在當前日期的末尾。午夜訂單後的24h時間

我需要0:00到6:00在一天結束時獲得排序,而不是直接從數據庫開始排序。

我正在使用java,hibernate標準,mysql datetime。 謝謝大家!

+1

從一個「日」到下一個的截止點在哪裏?它是在「24:59」嗎? 「25:00」? –

+0

你真的沒有提供足夠的上下文來獲得真正的答案。你想把這些時間按不同方式排序?在網頁上?在查詢結果集?時間是否存儲爲數據庫中的Date對象?作爲字符串?我們需要更好地描述需求。 –

+0

我同意持續的決定。我的回答部分基於猜測,總是一件冒險的事情。請考慮編輯您的問題,以更詳細地解釋您要完成的任務。 –

回答

1

您可以通過在整個應用程序中使用MySql DATETIME數據類型來正確訂購您的日期和時間。 Java等價類是util.Date

根據計算機和電信行業標準,每個日曆日的第一毫秒具有00:00.000的時間。因此,如果您將秒數增加到23:59:51.000,您將在第二天獲得00:00:01.000。

聽起來像你的企業有一個不同的,非標準的規則來描述每一天的開始和結束,用於這個特定的顯示。沒關係。但是你需要非常精確地列舉這個規則。午夜在人類努力的許多領域都很重要!

假設你的規則是一天的信息從第二天的[01:00:00到01:00:00)運行。

然後你可以在這樣的MySQL查詢中選擇昨天的記錄。

WHERE `timestamp` >= CURDATE() - INTERVAL 1 DAY + INTERVAL 1 HOUR 
    AND `timestamp` < CURDATE() + INTERVAL 1 HOUR 
    ... 
ORDER BY `timestamp` 

這將按正確的順序顯示你的東西。它不會顯示24:01的時間,但會在23:59後顯示00:01。

+0

這似乎是一個簡單和良好的答案,我明天會嘗試,我會反饋。感謝Ollie! – surfealokesea

+0

我沒有看到我可以將它與hibernate和我的複雜條件列表集成在一起的方式。我沒有找到一種方法在hibernate Order子句中集成sql。最後,我在數據庫中創建了一個varchar日期列,其值爲YYYYMMDDHHMM,其中我將小時數保存爲24而不是00,然後獲取按此列排序的列表 – surfealokesea