2013-01-23 162 views
3

我有一個包含在MySQL(例如2013年1月17日21時16分06秒)與datetime數據類型記錄的表, 而在我的實體,我選擇LocalDateTime數據類型的日期字段。在我的查詢期間,我希望僅基於2日期檢索所有記錄(使用日期選擇器從日期和日期)。比方說,我選擇從日期和toDate相同的日期,問題是兩個值是相同的,因爲時間是00:00:00,因此從數據庫中沒有結果。質疑LocalDateTime

我很好奇,如果我使用了喬達的正確數據類型。我是否需要調整兩個值的時間,讓fromDate爲00:00:00,toDate爲23:59:59?或者更好的方法是什麼?

+1

選擇日期> = fromDate 00:00和日期

+0

這意味着我需要構建一個新的LocalDateTime,它恰好在toDate後的一天。是嗎? – abiieez

+0

是的。或者更好,你可以告訴MySQL在指定的日期添加一天(使用DATE_ADD函數或者只是'/ * SELECT * /'2013-01-17'+ INTERVAL 1 DAY')。 –

回答

2

給定一個日期時間列和兩個任意日期作爲輸入,你可以這樣寫:

SELECT * FROM `table` 
WHERE `datetime` >= @startDate 
AND `dateTime` < @endDate + INTERVAL 1 DAY 

其中:

  • 的startDate是開始日期,包容
  • 結束日期爲結束日期,獨家

上述方法最好通過以下cas解釋ES:

  1. 要查看2013-01-17(一天)的所有記錄的startDate應該2013-01-17日期和結束日期應該是2013-01-17
  2. 要查看所有記錄2013-01-17 - 2013-01-18(2天)的startDate應2013-01-17日期和結束日期應該是2013-01-18

這使得選擇日期直觀。 <符號確保將計算的結束日期從結果中排除(例如,在第一種情況下,查詢省略了「2013-01-18 00:00:00記錄」)。