在其中一个集合中,我有一个字段需要设置为当前日期,例如“2018-01-26”。其中不应包含任何时间。这使我可以轻松地根据日期查询文档。我尝试过使用下面的代码,它总是保存日期和时间。
@DateTimeFormat(iso= DateTimeFormat.ISO.DATE_TIME)
private Date journeyDate;
或
@DateTimeFormat(iso= DateTimeFormat.ISO.DATE)
private Date journeyDate;
如何才能在数据库中只保存日期部分?
最佳答案
您无法真正将 Mongo 中的日期设置为“2018-01-26”。因为无论我们做什么转换,最终我们都需要创建一个 Date 对象来保存在 Mongo 中。没有时间,日期对象就不可能存在。
但是您可以做的是,您可以通过编写自定义转换器并注册它来控制存储的内容。
在此转换器中,我所做的是将所有日期截断为一天的开始,这意味着所有日期的时间都设置为 00:00:00(无论其时间如何)。这样您整天都有相同的时间。我希望这有助于编写您需要的查询。
@Configuration
public class MongoConverterConfig
{
@Bean
public CustomConversions dateConversions()
{
List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>();
converterList.add(new DateConverter());
return new CustomConversions(converterList);
}
@WritingConverter
static class DateConverter implements Converter<Date, Date> {
@Override
public Date convert(Date input) {
if (input == null) {
return null;
}
return Date.from(Instant.ofEpochMilli(input.getTime()).truncatedTo(ChronoUnit.DAYS));
}
}
}
如果您确实只想在 mongo 中存储“2018-01-26”,那么您必须将其存储为字符串,我不建议这样做。
关于java - Spring Data Mongo : How to save only date i. e。不是时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462554/