Mysql
 sql >> база данни >  >> RDS >> Mysql

намиране дали предстои годишнина след n дни в MySql

Както казаха други, трябва да игнорирате годината във вашето сравнение. Функцията DAYOFYEAR() е един от начините да направите това.

Ето едно бързо решение на главата ми. Той ще върне всички рождени дни през следващите 10 дни, дори ако е края на декември и рожденият ден е следващата година.

Той НЕ се справя правилно с високосните години, така че ще бъде изключен с 1 ден за рождените дни в началото на март, ако тази година е високосна и лицето не е роден през високосна година или обратно. Високосните години също ще накарат рождените дни в началото на януари да се появяват понякога в един почивен ден в края на декември. Ако някой иска да добави корекция за високосната година, не се колебайте :)

SELECT birthdate 
FROM Anniversaries 
WHERE dayofyear(birthdate) - dayofyear(curdate()) between 0 and 10 
or dayofyear(birthdate) + 365 - dayofyear(curdate()) between 0 and 10;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. персонализиран php форум - показва нови/непрочетени публикации

  2. MySQL - Изчисляване на полета в движение срещу съхраняване на изчислени данни

  3. Проблем с MySQL localhost / 127.0.0.1

  4. Как умишлено да заключите MySQL ред, така че дори SELECT да върне грешка?

  5. MemSQL - Сурогатен ключ като първичен и различни уникални ключове едновременно при създаването на таблица