sql >> Database teknologi >  >> RDS >> Oracle

Hvordan samles tidszone af operativsystem fra Oracle-database i strengformat? (Migrer/konverter dato til ts med tz)

Hvis dataene allerede er i en Oracle SQL-tabel, og du skal konvertere til et tidsstempel med tidszone (f.eks. i en ny kolonne, du har oprettet i samme tabel), behøver du ikke at gå eksplicit til OS, eller til brug Java eller en hvilken som helst anden ting, bortset fra selve Oracle-databasen.

Det fremgår ikke klart af dit spørgsmål, om du må antage, at "datoen" var beregnet til at være i serverens tidszone (du nævner "databasen", som normalt betyder serveren) eller klientens tidszone (du nævner "session", hvilket betyder klienten). Uanset hvad:

update <your_table>
set <timestamp_with_time_zone_col> = 
            from_tz(cast<date_col> as timestamp, dbtimezone)
;

eller brug sessiontimezone som det andet argument, hvis det er det, du har brug for.

Dette forudsætter, at databasens (og/eller sessionens) tidszone er sat korrekt op i henholdsvis db'en i klienten. Hvis det ikke er / er de ikke, skal det rettes først. Oracle er perfekt i stand til at håndtere dagsparetid, hvis parametrene er indstillet korrekt i første omgang. (Og hvis de ikke er det, er det ikke klart, hvorfor du ville forsøge at få din operation til at være "mere korrekt", end databasen understøtter i første omgang.)

Eksempel:I WITH-sætningen nedenfor simulerer jeg en tabel med en kolonne dt i datatypen date . Så konverterer jeg det til et timestamp with time zone , i min sessions (klient) tidszone.

with
  my_table ( dt ) as ( 
    select to_date('2018-06-20 14:30:00', 'yyyy-mm-dd hh24:mi:ss') from dual 
  )
select dt,
       from_tz(cast(dt as timestamp), sessiontimezone) as ts_with_tz
from   my_table
;

DT                  TS_WITH_TZ                                       
------------------- -------------------------------------------------
2018-06-20 14:30:00 2018-06-20 14:30:00.000000000 AMERICA/LOS_ANGELES


  1. systemdato forskel

  2. spring boot hibernate-forespørgsel ugyldig brugerfejl

  3. Hvordan opsætter man Postgres-database til lokale Rails-projekter?

  4. Rails 3 forespørger på betingelse af en forenings optælling