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

日時列をUTC時間に変換する

    はじめに:to_char() 日付から文字列を返します。したがって、dateが必要な場合 、使用しないでください。つまり、これを置き換えてください:

    to_char(to_date(f_sta_date, 'YYYYMMDD') + (f_sta_time)/86400), 'YYYY-MM-DD HH24:MI:SS')
    

    宛先:

    to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400
    

    次に、タイムゾーンの管理に関しては、timestamp with time zoneを使用する必要があります。 dateの代わりにデータ型 。現地時間で日付を変換するには(つまり、SESSIONTIMEZONEで定義されているセッションのタイムゾーン) )タイムスタンプを取得し、UTCで対応する日付/時刻を取得するには、次の操作を実行できます。

    cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp with time zone) 
        at time zone 'UTC'
    

    あなたの質問:

    select
        to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 dt_sta,
        to_date(f_sto_date, 'YYYYMMDD') + f_sto_time/86400 dt_sto,
        cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp) 
            at time zone 'UTC' dt_sta_utc,
        cast(to_date(f_sto_date, 'YYYYMMDD') + f_sto_time/86400 as timestamp) 
            at time zone 'UTC' dt_sto_utc
    from t
    


    1. ORDER BYを使用するときにMySQLがインデックスを使用しない(filesortを使用)

    2. 製品の数量を合計するuser_idでグループ化された注文のテーブルを生成します

    3. 外部キーの依存関係を持つ重複行を削除するにはどうすればよいですか?

    4. Oracleピボット演算子