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

Bagaimana cara membuat modul Ulang tahun mendatang di Rails?

Beberapa jawaban menyarankan untuk menghitung/menyimpan hari dalam setahun dan memilah-milahnya, tetapi ini saja tidak akan banyak berguna ketika Anda mendekati akhir tahun dan perlu mempertimbangkan orang-orang yang berulang tahun di awal tahun depan.

Saya akan mencari solusi di mana Anda menghitung tanggal lengkap (tahun, bulan, hari) setiap ulang tahun berikutnya setiap orang , lalu urutkan itu. Anda dapat melakukan ini dalam kode Ruby, atau menggunakan prosedur tersimpan dalam database. Yang terakhir akan lebih cepat, tetapi akan membuat aplikasi Anda lebih sulit untuk dimigrasikan ke platform db yang berbeda nanti.

Masuk akal untuk memperbarui daftar ulang tahun yang akan datang ini hanya sekali per hari, yang berarti Anda dapat menggunakan beberapa bentuk caching. Dengan demikian, kecepatan kueri/kode yang dibutuhkan tidak terlalu menjadi masalah, dan sesuatu seperti ini akan berfungsi dengan baik selama Anda menyimpan hasil cache:

class User
  def next_birthday
    year = Date.today.year
    mmdd = date_of_birth.strftime('%m%d')
    year += 1 if mmdd < Date.today.strftime('%m%d')
    mmdd = '0301' if mmdd == '0229' && !Date.parse("#{year}0101").leap?
    return Date.parse("#{year}#{mmdd}")
  end
end

users = User.find(:all, :select => 'id, date_of_birth').sort_by(&:next_birthday).first(5)

Sunting :Tetap berfungsi dengan benar dengan tahun kabisat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menginstal mysql secara diam-diam di pengaturan inno?

  2. 2 Kunci Asing yang merujuk pada Kunci Utama yang sama di MySQL

  3. Lulus indeks ke tabel sementara dari tabel biasa?

  4. Tidak dapat mengeluarkan pernyataan manipulasi data dengan executeQuery()

  5. Kesalahan 1148 MySQL Perintah yang digunakan tidak diizinkan dengan versi MySQL ini