Saya mempunyai platform yang mempunyai fungsi daftar masuk. Saya perlu menentukan berapa hari berturut-turut pengguna ini telah mendaftar masuk pada platform ini dan memberinya mata yang berbeza.
Sebagai contoh, hari ini ialah 26 April, dan saya telah log masuk setiap hari sejak 15 April Ini bermakna saya telah log masuk selama 12 hari berturut-turut pada 13 April, tetapi tidak log masuk pada 14 April.
penyataan mysql Cara menulisnya
Secara amnya, bilangan hari log masuk berterusan disimpan Jika ia tidak disimpan, satu cara yang telah kami lakukan sebelum ini ialah menyimpan log masuk dengan cap masa dan kemudian mendapatkan cap masa log masuk. kami mendapatkannya selama satu bulan (jika bulan ini Apabila log masuk penuh, dapatkan nombor bulan sebelumnya), dan kemudian gelungkan bilangan hari dalam PHP untuk mengiranya. Kemudian, kaedah ini lebih perlahan, jadi kami merekodkan hari daftar masuk secara berasingan
Isu reka bentuk pangkalan data
.Oleh kerana perlu mengira hari berturut-turut, adalah mustahil untuk merekodkan satu item setiap hari (bayangkan bank merekodkan baki pengguna untuk sebarang bilangan hari
Kaedah perakaunan dipanggil algoritma pengumpulan tahunan). Iaitu, merekodkan titik masa tertentu sehingga masa lain Baki pada satu titik masa kekal tidak berubah (berterusan)
reka bentuk jadual, kira-kira seperti berikut:
Masa tamat - masa mula = bilangan hari penukaran mata adalah seperti cukai, hanya mengira bonus
Dalam peraturan perniagaan anda, perlu ada had berapa banyak mata yang akan diberikan untuk x hari berturut-turut Contohnya, berapa banyak mata yang akan diberikan jika terdapat >= 20 hari berturut-turut.
Kemudian mari kita ingat x ini, dalam db pilih * dari tb di mana uid = 10086 pesanan mengikut dt desc had x
Kemudian dalam program, tentukan bilangan maksimum hari berturut-turut dan tambah skor yang sepadan.