SQL 分页查询数据按照生日日期从近到远排序应该如何处理?
现有一张用户数据表 user_table
里面有个 birthday
字段存放用户出生日期(如 1994-01-01、1996-07-1
)对应的时间戳数据
现在需要按照生日从近到远的排序来分页查找用户数据
比如今天 2016-07-28
的话,生日日期分别为 1995-07-30
、1993-11-31
、1997-08-29
、1995-07-27
的四个用户数据排序后就是 1995-07-30
、1997-08-29
、1993-11-31
、1995-07-27
SQL 语句怎么写才能满足这样的查询条件?
或者说我这存放生日的数据表结构应该修改成怎样才合适?
回复内容:
现有一张用户数据表 user_table
里面有个 birthday
字段存放用户出生日期(如 1994-01-01、1996-07-1
)对应的时间戳数据
现在需要按照生日从近到远的排序来分页查找用户数据
比如今天 2016-07-28
的话,生日日期分别为 1995-07-30
、1993-11-31
、1997-08-29
、1995-07-27
的四个用户数据排序后就是 1995-07-30
、1997-08-29
、1993-11-31
、1995-07-27
SQL 语句怎么写才能满足这样的查询条件?
或者说我这存放生日的数据表结构应该修改成怎样才合适?
不考虑数据量和性能问题的简单做法:
加一个字段, 保存dayofyear的信息, 比如说这个字段名就叫day_of_year, 那么你插入语句是这样的:
insert into user_table set ... = ..., day_of_year = DAYOFYEAR('1995-07-30');
查询的时候查询两次, 首先是查询 day_of_year 字段大于你的当前值的, 然后查询这个字段小于当前值的, 按 day_of_year 排序:
select * from user_table where day_of_year >= DAYOFYEAR(CURDATE()) order by day_of_year asc; select * from user_table where day_of_year < DAYOFYEAR(CURDATE()) order by day_of_year asc;
先前少看一个条件
mysql 把时间 1995-07-30 ,先转换成一年中的第几天 DAYOFYEAR('1995-07-30'),减去今天是一年中的第几天,得到一个差值然后order by 一下就行。
如果生日的月日一样,可以再按年递增排序。
<code>select * from user_table order by (DAYOFYEAR(birthday)-DAYOFYEAR(curdate())),year(birthday) ASC</code>
思路:你这个其实就是先按相减之后的月排,排完之后再按相减之后的日排
<code>mysql> SELECT name, birthday FROM user_table -> WHERE MONTH(birthday) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH)) -> ORDER BY DAY(birthday) asc; </code>
上面这个代码可以实现获取当前月份之后1个月的生日数据并按照日升序排列,你再写个repeat把后面的取出来就好了
<code>DROP TEMPORARY TABLE IF EXISTS aa; DROP TEMPORARY TABLE IF EXISTS bb; create temporary table aa(select birthday from user_table WHERE substring(birthday,6,10)>'07-28' ORDER BY substring(birthday,6,10) asc); create temporary table bb(select birthday from user_table WHERE substring(birthday,6,10)<'07-28' ORDER BY substring(birthday,6,10) asc ); SELECT * FROM aa Union All SELECT * FROM bb 测试了一下,效果如图所示</code>
1995-07-30
1997-08-29
1993-11-31
1999-01-01
1995-07-27

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam pangkalan data MySQL, hubungan antara pengguna dan pangkalan data ditakrifkan oleh kebenaran dan jadual. Pengguna mempunyai nama pengguna dan kata laluan untuk mengakses pangkalan data. Kebenaran diberikan melalui perintah geran, sementara jadual dibuat oleh perintah membuat jadual. Untuk mewujudkan hubungan antara pengguna dan pangkalan data, anda perlu membuat pangkalan data, membuat pengguna, dan kemudian memberikan kebenaran.

Penyederhanaan Integrasi Data: AmazonRDSMYSQL dan Integrasi Data Integrasi Zero ETL Redshift adalah di tengah-tengah organisasi yang didorong oleh data. Proses tradisional ETL (ekstrak, menukar, beban) adalah kompleks dan memakan masa, terutamanya apabila mengintegrasikan pangkalan data (seperti Amazonrdsmysql) dengan gudang data (seperti redshift). Walau bagaimanapun, AWS menyediakan penyelesaian integrasi ETL sifar yang telah mengubah keadaan ini sepenuhnya, menyediakan penyelesaian yang mudah, hampir-sebenar untuk penghijrahan data dari RDSMYSQL ke redshift. Artikel ini akan menyelam ke integrasi RDSMYSQL Zero ETL dengan redshift, menjelaskan bagaimana ia berfungsi dan kelebihan yang dibawa kepada jurutera dan pemaju data.

Untuk mengisi nama pengguna dan kata laluan MySQL: 1. Tentukan nama pengguna dan kata laluan; 2. Sambungkan ke pangkalan data; 3. Gunakan nama pengguna dan kata laluan untuk melaksanakan pertanyaan dan arahan.

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

1. Gunakan indeks yang betul untuk mempercepatkan pengambilan data dengan mengurangkan jumlah data yang diimbas memilih*frommployeesWherElast_name = 'Smith'; Jika anda melihat lajur jadual beberapa kali, buat indeks untuk lajur tersebut. Jika anda atau aplikasi anda memerlukan data dari pelbagai lajur mengikut kriteria, buat indeks komposit 2. Elakkan pilih * Hanya lajur yang diperlukan, jika anda memilih semua lajur yang tidak diingini, ini hanya akan memakan lebih banyak pelayan dan menyebabkan pelayan melambatkan pada masa yang tinggi atau kekerapan misalnya, jadual anda

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Penjelasan terperinci mengenai atribut asid asid pangkalan data adalah satu set peraturan untuk memastikan kebolehpercayaan dan konsistensi urus niaga pangkalan data. Mereka menentukan bagaimana sistem pangkalan data mengendalikan urus niaga, dan memastikan integriti dan ketepatan data walaupun dalam hal kemalangan sistem, gangguan kuasa, atau pelbagai pengguna akses serentak. Gambaran keseluruhan atribut asid Atomicity: Transaksi dianggap sebagai unit yang tidak dapat dipisahkan. Mana -mana bahagian gagal, keseluruhan transaksi dilancarkan kembali, dan pangkalan data tidak mengekalkan sebarang perubahan. Sebagai contoh, jika pemindahan bank ditolak dari satu akaun tetapi tidak meningkat kepada yang lain, keseluruhan operasi dibatalkan. Begintransaction; UpdateAcCountSsetBalance = Balance-100Wh

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.
