Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Di mana menetapkan nilai datetime UTC dalam aplikasi n-tier:Presentation Layer, Domain, atau Database?

Saya memilih untuk mengaturnya dalam prosedur (atau default untuk kolom, untuk sisipan). Tidak ada alasan untuk melewatkan semua informasi ini melalui semua lapisan kecuali Anda memerlukan akurasi mikrodetik untuk membedakan mis. saat pengguna mengklik tombol vs. saat transaksi dilakukan di database. Ini terutama benar jika Anda memiliki aplikasi terdistribusi - apakah Anda ingin mengandalkan semua server web/aplikasi Anda untuk sinkron, apalagi workstation pengguna akhir untuk aplikasi klien/server? Anda mungkin memiliki server di pusat data yang berbeda, semuanya dengan zona waktu yang berbeda, beberapa mengamati DST, beberapa tidak, dll. DateTime.UtcNow harus melenyapkan sebagian besar perbedaan itu tetapi saya masih akan kembali meneruskan semua data itu tanpa alasan. Basis data tahu jam berapa sekarang; biarkan itu menyimpan nilai untuk Anda dan jauhkan semua logika itu dari aplikasi.

(Juga jika Anda menyimpan waktu UTC, apakah Anda benar-benar membutuhkan DATETIMEOFFSET ? Jika demikian, maka Anda masih memerlukan beberapa cara untuk prosedur mengetahui zona waktu mana informasi ini berasal. Jika tidak, maka Anda sebaiknya menggunakan SMALLDATETIME/DATETIME/DATETIME2 tergantung pada akurasi yang dibutuhkan.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara tercepat untuk mentransfer data tabel Excel ke SQL 2008R2

  2. Ubah jenis kolom dengan angka dari varchar menjadi int

  3. Ubah Format Tanggal Untuk Sesi Saat Ini di SQL Server

  4. Bagaimana cara membuat prosedur tersimpan yang secara opsional akan mencari kolom?

  5. Cara mendapatkan nilai kolom dalam satu nilai yang dipisahkan koma