2015-04-17 81 views
2

我正在使用Java與MongoDB的Web服務,因爲我試圖檢查日期時間是否說「2015-04-16 16 :32:49" 位於日期時間存在於字段START_TIME和END_TIME從table.In MySQL之間的我嘗試以下查詢要檢查一個日期是否在MongoDB的列中的兩個日期之間使用JAVA

SELECT * FROM表名其中EMPLOYEE_ID = 101和「2015年4月16日 16 :start_time和end_time之間的32:49';

我試圖通過使用下面的代碼

BasicDBObject whereQuery = new BasicDBObject(); 
      whereQuery.put("employeeID", "101"); 
      String date = "2015-04-17 11:02:49"; 
      whereQuery.put(date, new BasicDBObject("$gt", "start_time ") 
        .append("$lt", "end_time ")); 
DBCursor cursor = col.find(whereQuery); 

複製使用Java MongoDB中相同,但代碼是不工作的,它不是比較表兩列中指定的日期,是什麼是正確的語法做

,如果我嘗試此代碼

whereQuery.put(someOtherField, new BasicDBObject("$gt", "2015-04-17 11:02:49") 
         .append("$lt", "2015-04-19 11:02:49")); 

這是工作,我需要的語法比較兩個字段的日期字符串在整個表

+0

「start_time」和「end_time」的數據類型是什麼? – thegreenogre

+0

'String date'用於和MongoDB的'date'類型字段進行比較。當你傳遞'java.sql.Date'時會發生什麼? – Sridhar

+0

MongoDB中的DATE數據類型 – Vicky

回答

1

您所查詢的大致翻譯爲:

select * from tablename where Employee_id =101 and '2015-04-16 16:32:49' > "start_time" and '2015-04-16 16:32:49' < "end_time"; 

你比較字符串"start_time""end_time"'2015-04-16 16:32:49'

正確的查詢將是: -

BasicDBObject whereQuery = new BasicDBObject(); 
     whereQuery.put("employeeID", "101"); 
     String date_string = "2015-04-17 11:02:49"; 
     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH); 
     Date date = format.parse(date_string); 
     whereQuery.put("start_time", new BasicDBObject("$lt", date)); 
     whereQuery.put("end_time", new BasicDBObject("$gt", date)); 
DBCursor cursor = col.find(whereQuery); 

您可以使用普通的Java日期對象。

+0

謝謝我認爲它應該可以工作,這是記錄必須提取但它是沒有得到這個{_id「:ObjectId(」552fba6577c7ec1f6c2ec830「), 」blockID「:」B「, 「floorID」:「3」, 「employeeName」:「xxx」, 「employeeID」:「13」, 「roomRange」:「1,2,3」, 「isActive」:0, 「updateDateTime」 :ISODate(「2015-04-16T13:34:28.781Z」), 「shiftStartTime」:ISODate(「2015-04-16T11:02:49.000Z」), 「shiftEndTime」:ISODate(「2015-04- 18T11:02:49.000Z「) } – Vicky

+0

如果您正在查找完全匹配,您應該使用'$ gte'和'$ lte'來代替'$ gt'和'$ lt'。 – thegreenogre

+0

這是正在運行但未獲取記錄的mongo查詢{「employeeID」:「13」,「isActive」:0,「shiftStartTime」:{「$ gt」:{「$ date」:「2015-01- 「移動時間」:{「$ lt」:{「$ date」:「2015-01-17T05:32:49.000Z」}}} – Vicky

相關問題