sql >> データベース >  >> RDS >> Mysql

java.timeを使用してランダムなLocalDateを生成します

    簡単な方法は、最小日と最大日を対応するエポック日に変換し、これら2つの値の間にランダムな整数を生成し、最後にそれを LocalDateに戻すことです。 。エポック日は、<で取得されます。 code> toEpochDay() これは、1970-01-01(ISO)からの日数です。

    ランダムな年、月、日を生成する際の問題は、無効な日付(2月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. 問題セット1-エンティティの特定

    2. SQLクエリの結果が期待どおりに戻らないのはなぜですか?

    3. Unpivot Stepを使用して、クロス集計テーブルから表形式のテーブルを作成します

    4. PHPの複数オブジェクト関数呼び出し