2016-10-23 17 views
1

非常基本的問題Firebase endAt()不能使用日期字符串?在這裏

我的存儲日期字符串是這樣的火力地堡DB

23-Oct-2016 07:00:11 AM 

現在我射擊這個查詢,我得到首發與日期

Query query = mDatabase.orderByChild("time").startAt("23-Oct-2016") 
的所有數據

現在我也想過濾當前上午/下午時間,我正在嘗試這樣的查詢,但它對結果沒有影響。

基本上它不應該返回任何對象,如果當前時間是PM,我不知道爲什麼它不工作。

Query query = mDatabase.orderByChild("time").startAt("23-Oct-2016").endAt("PM"); 

回答

2

將日期和時間存儲爲可讀的字符串,就像您似乎正在做的一樣,保證會給您帶來困難。字符串按字典順序排列,而您通常希望將日期按時間順序排列。這兩個命令並不總是匹配。

存儲查詢日期/時間的最佳方式是簡單的timestamp:自UNIX紀元以來的毫秒數。

如果您堅持要將日期和時間存儲爲更具可讀性的字符串,那麼您最好將它們存儲爲可讀的格式,並按照字典順序和時間順序排序,如ISO 8601格式:20161023T150422 。這是我輸入的當前時間:2016年10月23日下午3:04 UTC。

+0

我做錯了什麼是我認爲startAt()和endAt()像字符串前綴和字符串結束比較的東西。我是firebase的新手,現在我明白了它的範圍。所以基本上只通過PM不會給我任何東西,因爲它不是合適的範圍。我需要每12小時過濾一次數據。我希望你明白我的觀點。 –

+0

上面描述的結構允許您根據多個日期/時間範圍過濾數據。 –