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

SimpleDateFormatter.parseは、指定されたものとは異なる形式で出力を提供します

    日付を文字列としてMySQLデータベースに渡さないでください。日付オブジェクトを渡す方が簡単で安全です。一つには、それはあなたをフォーマットとフォーマットの問題から解放します。最善の方法は、java.timeからクラスのインスタンスを渡すことです。 、最新のJava日付および時刻API。あなたの場合、LocalDateTime します。

        String ep ="a1527069600";
        long epoch = Long.parseLong(ep.substring(1));
        Instant inst = Instant.ofEpochSecond(epoch);
        LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();
    
        System.out.println(ldt);
    
        PreparedStatement ps = myDatabaseConnection.prepareStatement(
                "insert into my_table (my_date_time) values (?)");
        ps.setObject(1, ldt);
    

    LocalDateTime 得られるのは:

    エポック文字列からの変換を少し簡略化しました。プリミティブな小文字のlongを使用します Longではなく 物体。データベースの値がこのタイムゾーンにあると想定して、アジア/カルカッタのタイムゾーンを使用しています。通常の推奨事項は、少なくともデータがタイムゾーン外で使用される可能性がある場合は、データベース値をUTCで保持することです。これが必要な場合は、上記の変換の代わりにこの変換を使用してください:

        LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
    

    リンク: Oracleチュートリアル:日時 java.timeの使用方法を説明する 。




    1. MySQLテーブルにGUIDを保存するにはどうすればよいですか?

    2. ZendFramework1.5でINSERT...ON DUPLICATE KEY UPDATEを実行する方法はありますか?

    3. MySQLは文字列を列に連結します

    4. MySQLレプリケーション速度