Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Merancang acara tanggal-waktu yang tidak tumpang tindih

Sangat umum ketika bekerja dengan rentang tanggal-waktu bahwa Anda menggunakan rentang yang inklusif di awal dan eksklusif di akhir. Misalnya:

(using ISO8601 formatting)

Start                  End
2013-04-29T01:00:00Z - 2013-04-29T02:00:00Z
2013-04-29T02:00:00Z - 2013-04-29T03:00:00Z

Suatu nilai berada dalam rentang jika kurang dari atau sama dengan awal, dan lebih besar dari (tetapi tidak sama dengan) akhir. Pada contoh di atas, 02:00 milik rentang kedua, bukan yang pertama. Dengan kata lain:

Start <= value < End 

Atau setara,

Start <= value  AND  End > value

Dalam Matematika, menggunakan Notasi Interval , ini dikenal sebagai interval "setengah terbuka".

[Start, End)

Ini selalu merupakan pendekatan yang lebih baik daripada ide menggunakan nilai seperti 01:59:59 . Pertimbangkan jika saya akan mengurangi End - Start untuk mendapatkan durasi. Saya berharap jawabannya adalah satu jam, bukan 59 menit dan 59 detik.

Sebagian besar contoh menggunakan istilah Start/End , tetapi terkadang Anda akan melihat Begin/End atau Start/Stop . Secara pribadi, saya pikir kumpulan istilah terbaik untuk digunakan ketika Anda memiliki rentang inklusif/eksklusif adalah Start/Until . Ini memiliki keuntungan tambahan dari kedua istilah menjadi 5 karakter, berbaris menurut abjad, dan secara eksplisit menyampaikan bahwa tanggal akhir eksklusif.

Juga, ketika Anda berbicara tentang peristiwa yang berbeda, Anda harus mencatat waktu Anda sebagai UTC untuk mencegah kebingungan seputar zona waktu. Ini bahkan penting untuk aplikasi lokal, karena banyak zona waktu yang melewati transisi musim panas. Anda tidak ingin nilai yang Anda rekam dalam database menjadi ambigu. Di MySQL, Anda dapat menggunakan TIMESTAMP tipe data untuk memastikan nilai disimpan sebagai UTC, atau Anda dapat menggunakan DATETIME tipe data jika Anda yakin bekerja dengan nilai UTC dalam kode aplikasi Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. menghubungkan ke MySQL dari baris perintah

  2. MySQL 1292 Nilai tanggal waktu salah

  3. Cara Mendapatkan Catatan dari 10 Menit Terakhir di MySQL

  4. MySQL - Mengapa aturan COLLATION diabaikan oleh operator LIKE untuk karakter Jerman

  5. Panduan lengkap tentang cara menggunakan MySQL