sql >> Databáze >  >> RDS >> Mysql

Vygenerujte náhodné LocalDate pomocí java.time

Jednoduchým způsobem je převést minimální a maximální datum na odpovídající den epochy, vygenerovat náhodné celé číslo mezi těmito dvěma hodnotami a nakonec je převést zpět na LocalDate . Den epochy se získá pomocí toEpochDay() což je počet dní od 1. 1. 1970 (ISO).

Problém s generováním náhodného roku, pak měsíce a potom dne je ten, že máte malou šanci, že spadnete s neplatným datem (např. 31. února). Použití náhodného dne epochy také zaručuje rovnoměrné rozložení napříč všemi možnými daty.

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

Všimněte si, že protože minimální datum je ve skutečnosti úplně první, můžete ho nahradit 0.

Chcete-li převést toto LocalDate do java.sql.Date , můžete se podívat na tento příspěvek :

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


  1. SQL CREATE DATABASE Syntaxe – uvedena v DBMS

  2. Plánovač událostí MySQL každý den v konkrétní čas

  3. Chyby objevující se v kódu mysqli a call_user_func_array()

  4. Proč jsou hodnoty NULL na prvním místě při objednávání DESC v dotazu PostgreSQL?