sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur sparar man datum ordentligt?

c#-drivrutinen som standard (utan extra inställningar) sparar lokala datum som utc-datum i databasen (datum - tidszonförskjutning) men läser tillbaka utan någon åtgärd (så, utc-datum).

På grund av detta när du laddar datetime från databasen får du diff på 2 timmar (din tidszonsförskjutning). Det finns två sätt att säga till mongodb c#-drivrutinen konvertera utc-datum till lokala tidszondatum under deserialisering:

1.genom attributen för ett visst datumfält:

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}

2.through globala inställningar för alla datetime-fält (standard är UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

När du har gjort #1 eller #2 kommer du att se lokalt datum.

Uppdatering:

#2 är föråldrad i senaste drivrutinsversionen så använd koden nedan istället:

BsonSerializer.RegisterSerializer(typeof(DateTime), 
             new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));

Uppdatering:

#2 har ändrats igen:

BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);


  1. Hur enhetstestar man en metod som ansluter till mongo, utan att faktiskt ansluta till mongo?

  2. Skriv över objekt i mongodb

  3. MongoDB infogar float när man försöker infoga heltal

  4. Nod MongoDb { err:'anslutning till [127.0.0.1:27017] tog timeout' }