当前位置: 首页 > 知识库问答 >
问题:

MongoRepository@Query无法将字符串解析为日期

海灵均
2023-03-14

首先,我的问题是通过Spring MongoDb的MongoRepository在MongoDB中搜索集合。

我的对象:

{
    "_id" : ObjectId("5c78e1f447f39c2eacb229d7"),
    "lab" : "xxx",
    "type" : "Holiday",
    "description" : "Lunar New Year",
    "start_date" : ISODate("2019-02-04T02:37:42.152Z"),
    "end_date" : ISODate("2019-02-08T06:37:42.152Z"),
    "all_day" : true,
    "_class" : "xxx.Event"
}

我可以在Mongo query中随心所欲地执行以下操作:

db.getCollection('event').find({"start_date" : {$gte :ISODate( "2019-02-03T02:37:42.152Z") , $lte :ISODate( "2019-02-08T02:37:42.152Z")}})

(您可以用新日期替换ISODate)

但是要在Spring做这件事,我想这样做:

@Query("   $or: [ {start_date : {$gte :ISODate( ?0 ) , $lte :ISODate( ?1)}} , {end_date : {$gte :ISODate( ?0) , $lte :ISODate( ?1)}} ]  }  ")
List<Event> findAllEventByTime(String from, String to);

但它失败了,我搜索了两个主题:这里和那里

最终

@Query("{ 'start_date' : {$gte : {'$date': '?0'}, $lte :{'$date': '?1'} }}")
List<Event> findAllEventByTime(String from, String to);

但是,我又一次遇到了解析的问题:

2019-03-22 10:09:48.261ERROR 9316 --- [ XNIO-2 task-1]o.z.problem.spring.common.AdviceTrait:内部服务器错误

组织。bson公司。json。JsonParseException:无法将字符串解析为组织中的日期。bson公司。json。JsonReader。visitDateTimeExtendedJson(JsonReader.java:1057)

我建议您:

试用参数:2019年3月22日星期五10:09:48 ICT和2019-03-22T03:09:48.227Z和2016-04-14 00:00:00

这一切都在继续下去。。。你们能帮我修一下吗?

工作流:FE参数(字符串)~

共有2个答案

花欣然
2023-03-14

我用其他方法解决:

  • 在存储库中
Page<Event> findAllByStartDateBetweenOrEndDateBetween(Instant fromDate1, Instant toDate1, Instant fromDate2, Instant toDate2, Pageable pageable);
    List<Event> findAllByStartDateBetweenOrEndDateBetween(Instant fromDate1, Instant toDate1, Instant fromDate2, Instant toDate2);
@RequestParam Instant startDate, @RequestParam Instant endDate

和使用:

eventRepository.findAllByStartDateBetweenOrEndDateBetween(startDate, endDate, startDate, endDate))
应和悦
2023-03-14

您可以使用如下相同的方法制作Spring数据jpa:-

List<Event>  findByStart_dateIsAfterAndEnd_dateIsBefore(Date startDate, Date endDate);
 类似资料:
  • 问题内容: 我想将日期字符串解析为日期。我在寻找其他问题,但没有找到答案。 错误消息是java.text.ParseException:而且我不知道怎么了。 你能帮我吗。提前致谢。 编辑:好的。我将其翻译成英文,但是我仍然遇到同样的问题。我不想更改输入,因为它来自邮件数据库。还有其他想法吗? 我发现了问题。我是瞎子 来自数据库的St是,不是 谢谢。 问题答案: 在德语中,“欧洲中部时间”是“Mit

  • 我试图用GMT解析一个表示日期的字符串,但它在我的PC(太平洋)上的时区中打印出来。当我运行下面的时,我得到下面的输出。关于如何让解析器解析并返回GMT日期有什么想法吗?如果您看下面,我正在使用format.settimezone(timezone.gettimezone(“GMT”))设置时区;但它并没有产生预期的结果。 以下代码的输出: 10月29日星期一05:57:00 PDT 2012

  • 问题内容: 我的输入是以2015年7月1日格式为“ 01-07-2015”的日期的字符串表示形式。我正在尝试将其解析为一个变量: 基于JavaDoc,我希望它能起作用。但是,我收到了一条非常友好和有用的信息: 由以下原因引起:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayOfMonth = 1,MonthOfYear

  • 我的输入是2015年7月1日日期的字符串表示形式,格式为“01-07-2015”。我试图将其解析为变量: 基于JavaDoc,我希望这能起作用。然而,我收到了一条非常友好和有益的信息: 原因:java.time.DateTimeException:无法从TemporalAccessor获取LocalDate:{DayofMonth=1,MonthofYear=7,WeekBasedYear[Wee

  • 当我将格式的字符串对象转换为时,它会给我 我试着这样做:

  • 问题内容: 当我将格式的字符串对象转换为它给我时 我正在尝试这样做: 问题答案: 这里有几个潜在的问题: 您未指定格式 您未指定语言环境 您未指定时区 您正在尝试将返回值(将是引用)转换为-,否则将失败 您想要类似: