sql >> Databáze >  >> NoSQL >> MongoDB

Jak správně uložit datum?

Ovladač c# ve výchozím nastavení (bez dalších nastavení) ukládá místní data jako datum utc do databáze (posun datum - časové pásmo), ale zpětné čtení bez jakékoli akce (takže datum utc).

Z tohoto důvodu při načítání datetime z databáze obdržíte rozdíl za 2 hodiny (posun vašeho časového pásma). Existují dva způsoby, jak říci, že ovladač mongodb c# během deseralizace převede data utc na data místního časového pásma:

1.přes atributy pro konkrétní pole data:

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

2.through globální nastavení pro všechna pole data a času (výchozí je UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

Jakmile uděláte #1 nebo #2, uvidíte místní datum.

Aktualizace:

#2 je v nejnovější verzi ovladače zastaralý, takže místo něj použijte níže uvedený kód:

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

Aktualizace:

#2 se opět změnilo:

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


  1. Jak vrátit více hodnot pomocí Go Mongo Distinct

  2. BasicBSONList může pracovat pouze s numerickými klávesami, nikoli:[_id]

  3. Efektivní třídění výsledků geoprostorového dotazu mongodb

  4. Jak mohu použít geoprostorový dotaz v ovladači 2.1 MongoDB C#?