MongoDB日期时间格式
在mongodb临时查询中,在执行查询之前,如何将日期类型元素格式化为dd\mm\yyyy格式,然后执行查询?不久前我问了一个类似的问题……这可能就是您要找的:不久前我问了一个类似的问题……这可能就是您要找的:如果您使用Java,可以使用DateFormat类的解析方法从字符串创建日期对象 DateFormat类的Java文档可在此处找到: 解析方法的具体部分如下: Date对象的Java文档可以在这里找到: 根据构造函数摘要部分,不推荐将字符串传递到构造函数中。从JDK版本1.1开始,替换为DateFormat.parseString s 在研究上述内容时,我还遇到了Calendar类,该类可用于转换日期对象和一组整数。此应用程序可能不需要这样做,但我认为包含指向文档的链接可能会很有用: 年、月、日、小时等的整数可以通过set方法传入: 举个例子,下面是一个简短的Java程序,它创建了大量的日期对象,将它们存储在Mongo集合中,然后执行一个类似于您所描述的查询。希望它能帮助你实现你的目标。注意:此程序会删除一个名为dates的集合,因此如果数据库中已经有这样的集合,请确保更改集合名称MongoDB日期时间格式,mongodb,Mongodb,在mongodb临时查询中,在执行查询之前,如何将日期类型元素格式化为dd\mm\yyyy格式,然后执行查询?不久前我问了一个类似的问题……这可能就是您要找的:不久前我问了一个类似的问题……这可能就是您要找的:如果您使用Java,可以使用DateFormat类的解析方法从字符串创建日期对象 DateFormat类的Java文档可在此处找到: 解析方法的具体部分如下: Date对象的Java文档可以在这里找到: 根据构造函数摘要部分,不推荐将字符串传递到构造函数中。从JDK版本1.1开始,替换
public static void main(String[] args) throws UnknownHostException, MongoException {
Mongo m = new Mongo( "localhost:27017" );
DB db = m.getDB("test");
DBCollection coll = db.getCollection("dates");
coll.drop();
DateFormat df = DateFormat.getInstance();
String dateString = new String();
Date myDate = new Date();
// Save some test documents
for(int i=1; i<11; i++){
dateString = "04/" + String.valueOf(i) + "/12 11:00 AM, EST";
BasicDBObject myObj = new BasicDBObject("_id", i);
try {
myDate = df.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
myObj.put("date", myDate);
System.out.println(myDate);
coll.save(myObj);
}
// Build the query
Date startDate = new Date();
Date endDate = new Date();
try {
startDate = df.parse("04/4/12 11:00 AM, EST");
endDate = df.parse("04/6/12 11:00 AM, EST");
} catch (ParseException e) {
e.printStackTrace();
}
BasicDBObject dateQuery = new BasicDBObject();
dateQuery.put("$gte", startDate);
dateQuery.put("$lte", endDate);
System.out.println("---------------");
//Execute the query
DBCursor myCursor = coll.find(new BasicDBObject("date", dateQuery));
//Print the results
while(myCursor.hasNext()){
System.out.println(myCursor.next().toString());
}
}
如果您使用的是Java,那么可以使用DateFormat类的解析方法从字符串创建日期对象 DateFormat类的Java文档可在此处找到: 解析方法的具体部分如下: Date对象的Java文档可以在这里找到: 根据构造函数摘要部分,不推荐将字符串传递到构造函数中。从JDK版本1.1开始,替换为DateFormat.parseString s 在研究上述内容时,我还遇到了Calendar类,该类可用于转换日期对象和一组整数。此应用程序可能不需要这样做,但我认为包含指向文档的链接可能会很有用: 年、月、日、小时等的整数可以通过set方法传入: 举个例子,下面是一个简短的Java程序,它创建了大量的日期对象,将它们存储在Mongo集合中,然后执行一个类似于您所描述的查询。希望它能帮助你实现你的目标。注意:此程序会删除一个名为dates的集合,因此如果数据库中已经有这样的集合,请确保更改集合名称
public static void main(String[] args) throws UnknownHostException, MongoException {
Mongo m = new Mongo( "localhost:27017" );
DB db = m.getDB("test");
DBCollection coll = db.getCollection("dates");
coll.drop();
DateFormat df = DateFormat.getInstance();
String dateString = new String();
Date myDate = new Date();
// Save some test documents
for(int i=1; i<11; i++){
dateString = "04/" + String.valueOf(i) + "/12 11:00 AM, EST";
BasicDBObject myObj = new BasicDBObject("_id", i);
try {
myDate = df.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
myObj.put("date", myDate);
System.out.println(myDate);
coll.save(myObj);
}
// Build the query
Date startDate = new Date();
Date endDate = new Date();
try {
startDate = df.parse("04/4/12 11:00 AM, EST");
endDate = df.parse("04/6/12 11:00 AM, EST");
} catch (ParseException e) {
e.printStackTrace();
}
BasicDBObject dateQuery = new BasicDBObject();
dateQuery.put("$gte", startDate);
dateQuery.put("$lte", endDate);
System.out.println("---------------");
//Execute the query
DBCursor myCursor = coll.find(new BasicDBObject("date", dateQuery));
//Print the results
while(myCursor.hasNext()){
System.out.println(myCursor.next().toString());
}
}
我通过使用java中的getTime方法将datetime作为整数插入来解决这个问题。 例如:
我使用上面的代码行将日期插入为整数。这样就可以很容易地获取特定日期之间的记录。我通过使用java中的getTime方法将日期时间插入为整数来解决这个问题。 例如: 我使用上述代码行将日期插入为整数。使用此代码可以轻松地获取特定日期之间的记录。日期类具有beforedate或afterdate方法。。。它易于使用:无需转换为秒/毫秒
public void execute(Tuple input) {
try {
date=(Date) input.getValueByField("date");
boolean before = date.before(myDate); // compare the data retrieved with your date.
if (before) {
...
} else {
...
}
} catch (Exception e) {
logger.error("Error...", e);
}
这种方法比公认的答案更简单。日期类有beforedate或afterdate方法。。。它易于使用:无需转换为秒/毫秒
public void execute(Tuple input) {
try {
date=(Date) input.getValueByField("date");
boolean before = date.before(myDate); // compare the data retrieved with your date.
if (before) {
...
} else {
...
}
} catch (Exception e) {
logger.error("Error...", e);
}
这种方法比公认的答案更简单。这是一种使用完整格式将代码从简单日期时间格式转换为日期格式的方法,相反的步骤也支持这种从MongoDB检索日期的方法
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date fDate = formatter.parse((String) metaData.getValue());
newMeta.setValue(fDate);[![In this image you can see how is the save scenario process in mongoDB][1]][1]
这是使用full将代码从简单的日期时间格式格式化为日期格式,反向步骤也支持这种从MongoDB检索日期的方法
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date fDate = formatter.parse((String) metaData.getValue());
newMeta.setValue(fDate);[![In this image you can see how is the save scenario process in mongoDB][1]][1]
嗯,你用的是什么编程语言?你是以编程的方式做这件事的吗?嗯,你用的是什么编程语言?你是通过编程的方式做这件事的吗?我通读了你的答案。。实际上,我正在使用java驱动程序,我使用语法new Date插入当前日期。现在我必须获取给定范围内的记录。问题是mongodb中的日期是dd/MM/yyyy HH:MM:ss格式。现在我获取记录的格式是dd/MM/yyyy,因此我无法正确获取记录。提前感谢阅读通过你的回答。。实际上,我正在使用java驱动程序,我使用语法new Date插入当前日期。现在我必须获取给定范围内的记录。问题是mongodb中的日期是dd/MM/yyyy HH:MM:ss格式。现在我获取记录的格式是dd/MM/yyyy,因此我无法正确获取记录。提前感谢