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

Tạo LocalDate ngẫu nhiên với java.time

Một cách đơn giản là chuyển đổi ngày tối thiểu và tối đa thành ngày kỷ nguyên tương ứng của chúng, tạo một số nguyên ngẫu nhiên giữa hai giá trị đó và cuối cùng chuyển đổi nó trở lại LocalDate . Ngày kỷ nguyên được lấy bằng toEpochDay() là số ngày kể từ 1970-01-01 (ISO).

Vấn đề với việc tạo ra một năm, sau đó là tháng và ngày ngẫu nhiên là bạn có một cơ hội nhỏ để rơi vào một ngày không hợp lệ (như ngày 31 tháng 2). Ngoài ra, lấy một ngày kỷ nguyên ngẫu nhiên đảm bảo sự phân bổ đồng đều trên tất cả các ngày có thể có.

public static void main(String... args) {
    long minDay = LocalDate.of(1970, 1, 1).toEpochDay();
    long maxDay = LocalDate.of(2015, 12, 31).toEpochDay();
    long randomDay = ThreadLocalRandom.current().nextLong(minDay, maxDay);
    LocalDate randomDate = LocalDate.ofEpochDay(randomDay);
    System.out.println(randomDate);
}

Lưu ý rằng vì ngày tối thiểu thực sự là ngày đầu tiên, bạn có thể thay thế nó bằng 0.

Để chuyển đổi LocalDate này thành một java.sql.Date , bạn có thể tham khảo bài đăng này :

java.sql.Date date = java.sql.Date.valueOf(randomDate);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL có kèm theo MAMP không bao gồm tệp cấu hình không?

  2. Django, sau khi nâng cấp:Máy chủ MySQL đã biến mất

  3. SQL giới hạn CHỌN nhưng không THAM GIA

  4. Các báo cáo chuẩn bị từ phía khách hàng là gì?

  5. Làm cách nào để thực hiện truy vấn không trả về khi không có điều kiện?