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

Намиране на предстоящи рождени дни с jOOQ

Поле на jOOQ .add() методът е вдъхновен от интерпретацията на Oracle на

DATE + NUMBER

... където NUMBER (ако Цяло число или Двойно ) е брой дни. Това, което искате, е еквивалентно на добавяне на SQL стандарт ИНТЕРВАЛ ГОДИНА ДО МЕСЕЦ до определена дата. Това може да се постигне чрез използване на jOOQ на YearToMonth тип интервал , ако искате да добавите постоянен интервал. YearToMonth type също така разширява java.lang.Number , и по този начин може да се използва и с Field.add() , интуитивно.

Въпреки че може да е възможно да се генерира такова Поле чрез съществуващия API на jOOQ 3.2 вярвам, че ще бъде по-добре просто да прибягвате до обикновен SQL, вероятно чрез създаване на метод за многократна употреба:

public static <T extends java.util.Date> 
Field<T> dateInCurrentYear(Field<T> field) {
    return DSL.field("DATE_ADD({0}, INTERVAL YEAR(CURDATE()) - YEAR({0}) YEAR)",
                     field.getDataType(),
                     field);
}

Това може да е полезно допълнение към функцията за #2727 също...

За съжаление, интерпретациите на различните SQL диалекти на аритметиката за дата и час е трудно да се стандартизират. Постоянно подобряваме нещата там, но често обикновеният SQL е най-добрият начин за писане на специфични за диалекта аритметични изрази за дата и час.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да запишете завършен полигон точки leaflet.draw в таблицата на mysql

  2. LOAD DATA LOCAL INFILE дава грешка. Използваната команда не е разрешена с тази версия на MySQL

  3. Изберете процент редове от SQL таблица?

  4. Как се прави моделиране на наследяване в релационни бази данни?

  5. ActiveRecord::ConnectionTimeoutError:не можа да получи връзка с база данни в рамките на 5 000 секунди (изчаква се 5 000 секунди)