MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menyimpan tanggal dengan benar?

driver c # secara default (tanpa pengaturan tambahan) menyimpan tanggal lokal sebagai tanggal utc ke dalam database (tanggal - zona waktu offset) tetapi membaca kembali tanpa tindakan apa pun (jadi, tanggal utc).

Karena itu ketika Anda memuat datetime dari database, Anda menerima perbedaan dalam 2 jam (offset zona waktu Anda). Ada dua pendekatan bagaimana mengatakan kepada driver mongodb c# mengonversi tanggal utc ke tanggal zona waktu lokal selama deserialisasi:

1.melalui atribut untuk bidang tanggal tertentu:

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

2.melalui pengaturan global untuk semua bidang waktu-tanggal (defaultnya adalah UtcInstance ):

DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;

Setelah Anda melakukan #1 atau #2, Anda akan melihat tanggal lokal.

Pembaruan:

#2 sudah usang dalam versi driver terbaru jadi gunakan kode di bawah ini sebagai gantinya:

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

Pembaruan:

#2 telah berubah lagi:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konversikan kondisi kueri JSON ke operasi MongoDB/Mongoose

  2. Migrasi MongoDB ke DynamoDB, Bagian 2

  3. dapatkan nilai dengan nama kunci driver mongodb node.js

  4. Upser Massal dengan Driver MongoDB Java 3.0

  5. Temukan dan hapus semua dokumen yang tanggal pembuatannya satu bulan lebih tua