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

LocalDateTime、ZonedDateTime、およびTimestamp

    タイムスタンプ Dateを拡張します ナノ秒の精度を提供します。どちらのDateでもありません Timestampも 特定のタイムゾーンをZoneDateTimeとして参照するように設計されています 。

    ZonedDateTimeを変換する必要がある場合 ->Timestamp タイムゾーン/オフセット情報を破棄する必要があります。例:

    LocalDateTime withoutTimezone = zoneDateTime.toLocalDateTime();
    Timestamp timestamp = Timestamp.valueOf(withoutTimezone));
    

    Timestampを変換するため -> ZonedDateTime オフセットを指定する必要があります:

    LocalDateTime withoutTimezone = sqlTimestamp.toLocalDateTime();
    ZonedDateTime withTimezone = withoutTimezone.atZone(ZoneId.of("+03:00"));
    

    またはタイムゾーン:

    ZonedDateTime withTimezone = withoutTimezone.atZone(ZoneId.of("Europe/Paris"));
    

    ZonedDateTimeを保存する場合 データベース内の変数とそこで指定されたさまざまなタイムゾーンを保持するため、それに応じてデータベースを設計することをお勧めします。提案:

    1. タイプDATETIMEの列を使用します LocalDateTimeを保存するには およびVARCHAR "Europe/Paris"のようなタイムゾーンを保存する またはSMALLINT オフセットを数分で保存します。
    2. ZonedDateTimeを変換します StringVARCHARに保存します "2017-05-16T14:12:48.983682+01:00[Europe/London]"のような列 。次に、データベースから読み取るときに解析する必要があります。


    1. OracleのCASEステートメントを含む条件付きWHERE句

    2. mySQL 5でテーブル上のすべての外部キー制約を一度に削除することは可能ですか?

    3. サーバーとの接続は正常に確立されましたが、ログイン前のハンドシェイク中にエラーが発生しました

    4. PDOプリペアドステートメントのエラーチェック