繁体   English   中英

Spring Data Mongo:如何仅保存日期,即不保存时间

[英]Spring Data Mongo: How to save only date i.e. not time

在其中一个集合中,我有一个字段需要设置为当前日期,例如“ 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”,那么您将不得不将其存储为String,我不建议这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM