sql >> Database >  >> RDS >> Mysql

Genereer een willekeurige LocalDate met java.time

Een eenvoudige manier is om de minimum- en maximumdatum te converteren naar hun corresponderende epochedag, een willekeurig geheel getal tussen die twee waarden te genereren en deze uiteindelijk terug te converteren naar een LocalDate . De epoch-dag wordt verkregen met toEpochDay() dat is het aantal dagen sinds 1970-01-01 (ISO).

Het probleem met het genereren van een willekeurig jaar, dan maand en dan dag is dat je een kleine kans hebt om te vallen met een ongeldige datum (zoals 31 februari). Bovendien garandeert het nemen van een willekeurige epoch-dag een uniforme verdeling over alle mogelijke data.

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

Merk op dat aangezien de minimumdatum eigenlijk de allereerste is, je deze zou kunnen vervangen door 0.

Om deze LocalDate te converteren in een java.sql.Date , kunt u verwijzen naar dit bericht :

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


  1. Mislukte communicatieverbinding - het laatste pakket dat met succes van de server is ontvangen, was

  2. Oracle:hoe converteer ik hex naar decimaal in Oracle SQL?

  3. Het is tijd dat we de Microsoft Access IDE wat liefde geven

  4. Inleiding tot gegevenskoppelingen en -relaties