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

Генерирайте произволна LocalDate с java.time

Един прост начин е да конвертирате минималната и максималната дата в съответния ден от епохата, да генерирате произволно цяло число между тези две стойности и накрая да го преобразувате обратно в LocalDate . Денят на епохата се получава с toEpochDay() което е броят на дните от 1970-01-01 (ISO).

Проблемът с генерирането на произволна година, след това месец и след това ден е, че имате малък шанс да паднете с невалидна дата (като 31 февруари). Освен това вземането на случаен ден от епохата гарантира равномерно разпределение на всички възможни дати.

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

Имайте предвид, че тъй като минималната дата всъщност е първата, можете да я замените с 0.

За да конвертирате този LocalDate в java.sql.Date , можете да се обърнете към тази публикация :

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. Как да променя типа данни на колоната на таблицата върху повече от 1 колона?

  2. Как да запишете завършен полигон точки leaflet.draw в таблицата на mysql

  3. 10 полезни съвета за настройка на производителността на MySQL

  4. Търсене в пълен текст на PDO и MySQL

  5. Как мога да видя на живо MySQL заявки?