|
|
|
|
Strumenti |
05-11-2018, 14:54 | #1 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
[Oracle] Passaggio da ora legale a ora solare
Ciao
l'impianto era in produzione quando c'e' stato il passaggio da ora legale a ora solare. I dati di produzione sono stati salvati in un database Oracle. Ci sono ovviamente dei prodotti che hanno delle date "inconsistenti", nel senso che la fine della produzione e' avvenuta prima dell'inizio della stessa (nell'ora locale di Memphis, TN). Pensavo che si potesse ovviare al problema estraendo le date in formato GMT. Pero' se eseguo SELECT TO_CHAR(TIME_ENTERED_FM AT TIME ZONE 'UTC', 'YYYY-MM-DD HH24:MI:SS'), FROM PRODUCTION_STATUS WHERE ID_PRODUCT='xxxx-xxx-xxxx-xxx'; ottengo comunque che la data di fine produzione e' antecedente alla data di inizio. La stessa cosa se sostituisco 'GMT' a 'UTC'. Pensavo che questo non avrebbe dovuto succedere! Qualche idea?
__________________
In God we trust; all others bring data |
06-11-2018, 19:28 | #2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
La data come è stata inserita?
Edit: e di che tipo è la colonna SQL? Ultima modifica di wingman87 : 06-11-2018 alle 19:37. |
07-11-2018, 02:57 | #3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
La maggior parte delle colonne sono TIMESTAMP (senza timezone, immagino).
I dati sono inseriti da diverse applicazioni, alcune Java (accesso via jdbc), alcune C# (accesso via Entity Framework + Devart)
__________________
In God we trust; all others bring data |
07-11-2018, 21:34 | #4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2745
|
Provo a ragionare: se la colonna è di tipo timestamp senza time zone deve essere chi inserisce il dato a tenerne conto usando un'istruzione tale che il timestamp inserito sia universale (utc) e non "sfasato" dal fuso. Se così non è stato fatto si può verificare la fattibilità di correggere il dato (e andrebbe corretta anche la procedura di inserimento).
La prima idea che mi viene in mente è: se le righe sono frutto di insert (non di update) c'è qualche colonna identity nella tabella con cui poter ordinare le righe in ordine di inserimento? Se sì puoi scorrere le righe fino a quando il timestamp non "torna indietro" e iniziare a correggere da lì. Spero possa essere di qualche aiuto. Inviato dal mio F5121 utilizzando Tapatalk |
08-11-2018, 22:31 | #5 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Purtroppo i record vengono aggiornati continuamente. Magari se sono fortunato riesco a trovare una tabella nella quale si fanno solo INSERT...
Certo, la soluzione migliore sarebbe poter estrarre il campo "Daylight Savings Time" dal timestamp ed ordinare in base a quello. Non so se si puo' fare.... Nel caso non si possa, credo che il problema non sia risolvibile, per ora. Ovviamente se davvero e' cosi', dovro' memorizzare anche l'informazione "Ora solare/legale" in una nuova colonna del database...
__________________
In God we trust; all others bring data |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:53.