Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Add support for TIMESTAMP WITH TIME ZONE storing offset from UTC (not named TZ)

Aperta
#373 0 commenti 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
python
Ambito
databases

Direzione di ricerca

Iniziare in src/oracledb/impl/base/buffer.pyx, nella logica di parsing dei timestamp di Buffer, intorno alla gestione mostrata degli offset del fuso orario. Verificare come vengono convertiti i valori TIMESTAMP WITH TIME ZONE, quindi verificare che i valori contenenti solo un offset producano datetime consapevoli del fuso orario con l’offset UTC memorizzato, invece di datetime ingenui o fusi orari denominati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Currently naive datetime(s) are returned when column type is TIMESTAMP WITH TIME ZONE.
Issue #274 can be split into two tasks, one is supporting named time zones as per issue #20. The other task is supporting timestamps having only the offset from UTC.
I have no knowledge of Cython so I cannot create a PR but what I would try is:

--- a/src/oracledb/impl/base/buffer.pyx
+++ b/src/oracledb/impl/base/buffer.pyx
@@ -354,7 +354,10 @@ cdef class Buffer:
             tz_minute = ptr[12] - TZ_MINUTE_OFFSET
             if tz_hour != 0 or tz_minute != 0:
                 seconds = tz_hour * 3600 + tz_minute * 60
-                value += cydatetime.timedelta_new(0, seconds, 0)
+                tz_delta = cydatetime.timedelta_new(0, seconds, 0)
+                tz_utc = cydatetime.get_utc()
+                tz = cydatetime.timezone_new(tz_delta)
+                return value.replace(tzinfo=tz_utc).astimezone(tz)
         return value

     cdef object parse_interval_ds(self, const uint8_t* ptr):
Lingua principale
Python
Stelle
451
Fork
118
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di oracle/python-oracledb

Tutte le issue di oracle/python-oracledb

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.