簡體   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