Le differenze di tempo tra due date in Oracle

January 28

Le differenze di tempo tra due date in Oracle


Oracle produce un sistema di gestione di database relazionale che detengono dati in tabelle. Ciascuna tabella contiene colonne, che devono essere dato un tipo di dati. Oracle ha un speciale tipo di dati per le date. Il tipo di dati Oracle data contiene sia la data e l'ora. Ciò consente una migliore confronto e la manipolazione delle date che se fossero solo i campi di testo.

Restrizioni Data

Il tipo di dati speciale consente la validazione automatica dei dati. Erano date detenute come stringhe di testo, il programmatore sviluppare un metodo di inserimento dati sarebbe necessario effettuare controlli che la data immessa è in un formato valido, per esempio, che il giorno dato era possibile in un dato mese. Mentre si occupano di date, molti programmatori spesso dimenticano l'elemento tempo è presente in ogni data memorizzata nel database. Se la data inserita nel database non include un tempo, il default è "00:00". Se un elemento di tempo viene inserito nel database, il formato della data assicura che i numeri che compongono quel momento sono in un formato valido.

data di Rappresentanza

differenze di tempo in date sono spesso trascurati a causa delle due diverse rappresentazioni di date nel sistema Oracle. I valori contenuti nel database non seguono alcun formato data riconosciuta. Essi vengono memorizzati come un numero che rappresenta il numero di secondi dal 1 ° gennaio 4712 aC. Tuttavia, questo numero è raramente mostrato, anche una query direttamente dall'interno del sistema operativo date del database vengono visualizzati in un determinato formato di data. Se una query su una colonna di data non include un formato di data, la data viene estratto nel formato data di default, che è "DD-MON-YY".

Differenza di tempo

Una colonna popolato da una funzione di data conterrà automaticamente la data e l'ora corretta. Esempi di questo sono colonne popolate utilizzando la funzione SYSDATE. SYSDATE dà la data e l'ora corrente, che si ottiene dalla data di sistema e l'ora del database. Così, alcuni valori potrebbero contenere le date con il vuoto "00:00" e altri hanno il tempo vero e proprio attaccato. Tuttavia, se "01-Jan-2011 00:00" e "01-Jan-2011 14:20" sono entrambi interrogati dal database, saranno entrambi appaiono come "01-gen-11", in modo che si guarda il stesso.

I problemi

I programmatori di Oracle dimenticano spesso circa l'elemento di tempo quando si confrontano le date. Ciò può causare programmi sembrano comportarsi in modo non corretto. Durante l'elaborazione di record rispetto ad una funzione di data o l'ora, il programmatore potrebbe essere disorientato sul motivo per cui un comando per manipolare tutti i record con un valore di colonna data di sysdate-4 (quattro giorni fa) non trova molti record che avrebbe dovuto intrappolati. Questo è a causa della differenza di tempo tra i due valori. Un confronto con sysdate-4 sarà solo dare record con lo stesso tempo come il tempo corrente, ma quattro giorni prima. Quando si lavora con le date, i programmatori dovrebbero ricordarsi di scontare l'elemento tempo utilizzando la funzione trunc ().