2015-10-18 49 views
3

我在MySQL中有一個用戶表格,其格式爲Europe/Paris。我的目標是從我的Java應用程序中查找當前上午8點的用戶。查找哪些時區名稱在上午8點

僅使用Europe/Paris將不起作用,因爲Europe/BrusselsEurope/Amsterdam具有相同的時區和DST。所以我想找一個特定時間的所有可能的名字。

我也不能只使用GMT + 1偏移量,因爲夏令時將在夏季轉換它,並且不會在同一日期爲所有人切換。

我檢查了TimeZone類並找不到它。

+0

怎麼樣將所有次進入一個共同的時區,然後比較輸出無論是在說時區的巴黎上午8點? – ahmed

+0

什麼是歐洲/巴黎格式的時區專欄?我沒有看到[MySQL數據類型]文檔(https://dev.mysql.com/doc/refman/5.7/en/data-types.html)中列出的內容。 –

+0

@BasilBourque - MySQL支持標準的IANA/Olson時區格式。 「歐洲/巴黎」就是一個例子。 –

回答

0

一般:

  1. 獲取UTC當前時間。
  2. 對於每個時區,請轉換爲該區域的當地時間。
  3. 如果當地時間是你正在尋找的時間,那麼你有一場比賽。
  4. 查詢具有匹配時區的所有用戶。

的幾點:

  • 你可以做到這一點無論在MySQL,或爪哇。你沒有真正說出你在找什麼。

  • 您可以通過限制要測試的時區進行優化。您必須提前確定每個區域的標準和日光偏移量,然後將其用作過濾器。

  • 當你檢查「是否是8AM?」 - 你可能不想做一個確切的平等檢查,因爲它只會在8毫秒:00.000一毫秒。相反,你可能想測試針對一定範圍的值,如time >= 8:00 AND time < 9:00

+0

目前,我正在做一個'SELECT DISTINCT timezone FROM users',計算每個時區的時區並查詢具有這些時區的時區,因此它基本上就是您的建議。我寧願避免這種雙重查詢,只是從特定的時間中找出哪些時區對應於它(現在)。 –

相關問題