Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm sinh nhật sắp tới với jOOQ

Field của jOOQ .add () phương pháp được lấy cảm hứng từ cách giải thích của Oracle về

DATE + NUMBER

... ở đâu NUMBER (nếu một Integer hoặc Double ) là một số ngày. Những gì bạn muốn tương đương với việc thêm một tiêu chuẩn SQL INTERVAL YEAR TO MONTH đến một ngày nhất định. Điều này có thể đạt được thông qua việc sử dụng YearToMonth của jOOQ loại khoảng thời gian , nếu bạn muốn thêm một khoảng không đổi. YearToMonth kiểu cũng mở rộng java.lang.Number và do đó cũng có thể được sử dụng với Field.add () , trực quan.

Mặc dù có thể tạo một Field như vậy thông qua API jOOQ 3.2 hiện có, tôi tin rằng bạn sẽ tốt hơn nếu chỉ sử dụng SQL thuần túy, có thể bằng cách tạo một phương thức có thể sử dụng lại:

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);
}

Đây có thể là một bổ sung tính năng hữu ích cho # 2727 cũng như ...

Thật không may, khó có thể chuẩn hóa các cách diễn giải khác nhau của các phương ngữ SQL về số học ngày giờ. Chúng tôi không ngừng cải thiện mọi thứ ở đó, nhưng thông thường, SQL thuần túy là cách tốt nhất để viết các biểu thức số học ngày giờ theo phương ngữ cụ thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt và sử dụng Bộ công cụ Percona trên Centos 7

  2. Hiển thị danh sách quản trị viên Django + ForeignKey =Danh sách thay đổi trống

  3. Kết quả lặp PDO PHP

  4. Làm cách nào để giữ các giá trị của một cột duy nhất trong MySQL?

  5. Sự khác biệt giữa SERIAL và AUTO_INCREMENT trong mysql là gì