sql >> Database >  >> NoSQL >> MongoDB

Hoe datum correct opslaan?

c#-stuurprogramma standaard (zonder extra instellingen) lokale datums opslaan als utc-datum in database (datum - tijdzone-offset) maar teruglezen zonder enige actie (dus utc-datum).

Hierdoor ontvang je bij het laden van datetime uit de database diff in 2 uur (je tijdzone-offset). Er zijn twee manieren om te zeggen tegen mongodb c#-stuurprogramma converteer utc-datums naar lokale tijdzonedatums tijdens deserialisatie:

1.via de attributen voor een bepaald datumveld:

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

2. via globale instellingen voor alle datetime-velden (standaard is UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

Zodra je #1 of #2 hebt gedaan, zie je de lokale datum.

Bijwerken:

#2 is verouderd in de nieuwste versie van het stuurprogramma, dus gebruik in plaats daarvan onderstaande code:

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

Bijwerken:

#2 is weer veranderd:

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


  1. Wat is MapReduce Key Value Pair in Hadoop?

  2. Aggregeren op datum in Mongodb

  3. MongoDB findOne()

  4. Hoe gebruik je spring data mongo @CompoundIndex met subcollecties?