Saya menggunakan sistem Ubuntu 64 bit.
Saat ini saya sedang mengerjakan proyek yang menggabungkan MariaDB. Saya berencana untuk memperkenalkan teknik cap waktu ke dalam proyek sehingga orang akan menerima waktu yang tepat untuk zona waktu yang berbeda.
Saya pernah mendengar dan membaca beberapa artikel tentang masalah tahun 2038 untuk timestamp. Banyak artikel menyarankan agar kita menggunakan sistem 64 bit untuk membeli "bit" lebih banyak waktu.
Berapa banyak waktu yang dimaksud dengan "bit" ini? Apakah cukup lama bagi kami untuk dapat mengelola aplikasi web sampai akhir? Jika bukan itu masalahnya, apakah ini hanya perpanjangan dua tahun sehingga ketika tahun 2040 tiba, apakah kita akan memiliki aplikasi yang tidak berfungsi dengan baik?
time_t
bilangan bulat 64-bit akan memberi Anda lebih banyak waktu - hingga 15:30:08 pada hari Minggu, 4 Desember 292.277.026.596. Semoga cukup lama untuk aplikasi Anda;)Jawaban:
Nah jika ada opsi untuk benar-benar membeli "bit", yaitu transfer dari integer 32bit yang ditandatangani ke integer 32bit yang tidak ditandatangani, semuanya tetap berfungsi hingga 2106.
Mentransfer ke 64bit adalah "agak lebih baik". Anda mendapatkan resolusi ratusan miliar tahun.
Dan Ubuntu melakukan ini:
Namun, itulah level OS. Hanya karena Ubuntu menggunakan integer 64bit untuk zamannya tidak berarti bahwa MySQL / MariaDB akan menggunakannya untuk menyimpan stempel waktu. Jika tanggal melewati 2038 penting bagi Anda sekarang, segera mulai pengujian.
Sebenarnya, saya dapat menghemat waktu Anda. Itu masih rusak. Bug ini dilaporkan lebih dari satu dekade yang lalu tetapi tes utamanya masih gagal dengan int 64bit.
Ini bahkan bukan penyimpanan. Agak menyedihkan.
(Dan ya, itu dijalankan pada MariaDB, versi 10.1)
sumber
Jangan menyimpannya sebagai integer sama sekali. Simpan sebagai string tanggal yang diformat ISO 8601 . Ini adalah format standar yang digunakan di Internet.
sumber