Aritmetica di data
I valori delle date possono essere sottratti, incrementati o decrementati.
Sottrazione di date : il risultato della sottrazione di una data ( DATE2 ) da un'altra ( DATE1 ) è una durata che specifica il numero di anni, mesi e giorni tra le due date. Il tipo di dati del risultato è DECIMAL(8,0). Se DATE1 è maggiore o uguale a DATE2, DATE2 viene sottratto da DATE1. DATE1 Se DATE2 è minore di DATE2, tuttavia, DATE1 viene sottratto da e il segno del risultato viene reso negativo. La seguente descrizione della procedura chiarisce i passaggi coinvolti nell'operazione RISULTATO = DATE1 - DATE2.
| Sottrazione di date: risultato = date1 - date2 |
|---|
|
Ad esempio, il risultato di DATE('3/15/2005') - '12/31/2004' è 215 (o una durata di 0 anni, 2 mesi e 15 giorni). In questo esempio, si noti che il secondo operando non ha bisogno di essere convertito in una data. Secondo una delle regole per la sottrazione, descritta in Aritmetica datetime in SQL, il secondo operando può essere una rappresentazione stringa di una data se il primo operando è una data.
Incrementare e decrementare le date : il risultato dell'aggiunta di una durata a una data o della sottrazione di una durata da una data è esso stesso una data. (Ai fini di questa operazione, un mese equivale a una pagina di calendario. Aggiungere mesi a una data, quindi, è come girare le pagine di un calendario, iniziando dalla pagina in cui compare la data Il risultato deve essere compreso tra il 1° gennaio 0001 e il 31 dicembre 9999 inclusi. Se si aggiunge o si sottrae una durata di anni, viene modificata solo la parte dell'anno della data. Il mese rimane invariato, così come il giorno, a meno che il risultato non sia il 29 febbraio di un anno non bisestile. Qui la porzione giornaliera del risultato è impostata su 28 e il campo " SQLWARN6 " dell'SQLCA è impostato su W, indicando che è stata effettuata una rettifica di fine mese per correggere una data non valida. La descrizione dei campi SQLCA descrive anche come impostare SQLWARN6.
Allo stesso modo, se si aggiunge o si sottrae una durata di mesi, vengono modificati solo i mesi e, se necessario, gli anni. La parte del giorno della data rimane invariata a meno che il risultato non sia invalido (ad esempio il 31 settembre). In questo caso il giorno è impostato sull'ultimo giorno del mese e il campo " SQLWARN6 " dell'SQLCA è impostato su W per indicare l'adeguamento.
Aggiungere o sottrarre una durata di giorni influirà, ovviamente, sulla porzione di giorno della data e potenzialmente sul mese e sull'anno. L'aggiunta o la sottrazione di una durata in giorni non causerà un adeguamento di fine mese.
Le durate delle date, siano esse positive o negative, possono anche essere sommate e sottratte dalle date. Come per le durate etichettate, il risultato è una data valida e SQLWARN6 è impostato su W per indicare qualsiasi adeguamento di fine mese necessario.
DATE1 + YEAR(X) YEARS + MONTH(X) MONTHS + DAY(X) DAYS DATE1 - DAY(X) DAYS - MONTH(X) MONTHS - YEAR(X) YEARSAggiungere un mese a una data dà lo stesso giorno un mese dopo, a meno che quel giorno non esista nel mese successivo. In tal caso, il giorno nel risultato è impostato sull'ultimo giorno del mese successivo. Ad esempio, il 28 gennaio più un mese dà il 28 febbraio; un mese aggiunto al 29, 30 o 31 gennaio dà il 28 febbraio o, per un anno bisestile, il 29 febbraio. Se a una data data si aggiunge uno o più mesi e poi si sottrae lo stesso numero di mesi dal risultato, la data finale non è necessariamente la stessa della data originale.
(DATE('2005 01 31') + 1 MONTH) + 1 MONTH -- results in 2005-03-28
DATE('2005 01 31') + 2 MONTHS -- results in 2005-03-31 DATE1 + 1 YEAR + 1 DAY DATE1 - 1 DAY - 1 MONTH - 1 YEAR