La differenza tra le date in Excel è calcolata dalla funzione diffdat. Funzione diff() - calcolo della differenza di due date in giorni, mesi, anni in ms excel Differenza in giorni tra le date

Utilizzare la funzione DIVERSO se si desidera calcolare la differenza tra due date. Innanzitutto, inserisci una data di inizio in una cella e una data di fine in un'altra. Immettere quindi una formula, come una delle seguenti.

Differenza in giorni

In questo esempio, la data di inizio è nella cella D9 e la data di fine è nella cella E9. La formula verrà visualizzata su F9. "D" restituisce il numero di giorni interi tra due date.

Differenza in settimane


In questo esempio, la data di inizio è nella cella D13 e la data di fine è nella cella E13. "D" restituisce il numero di giorni. Ma nota che alla fine c'è /7 . Questo divide il numero di giorni per 7, poiché ci sono 7 giorni in una settimana. Si noti che anche questo risultato deve essere formattato come numero. Premere CTRL + 1. Quindi fare clic numero _gt_ cifre decimali: 2.

Differenza in mesi


In questo esempio, la data di inizio è nella cella D5 e la data di fine è nella cella in basso. Nella formula "m" restituisce il numero di mesi completi tra due giorni.

Differenza in anni


In questo esempio, la data di inizio è nella cella D2 e ​​la data di fine è nella cella E2. "Y"

Calcolo dell'età in anni, mesi e giorni cumulativi

1. Usa RAZDAT per trovare il numero totale di anni.


In questo esempio, la data di inizio è nella cella D17 e la data di fine è nella cella E17. Nella formula "y" restituisce il numero di anni completi tra due giorni.

2. Per cercare i mesi, utilizzare nuovamente RAZDAT, specificando "GM".


In un'altra cella, usa la formula RAZDAT con il parametro "GM". "GM" restituisce il numero di mesi rimanenti dopo l'ultimo anno intero.

3. Utilizzare una formula diversa per trovare i giorni.


Ora dobbiamo trovare il numero di giorni rimasti. Questo può essere fatto scrivendo un diverso tipo di formula come mostrato sopra. Questa formula sottrae il primo giorno della fine del mese (05/01/2016) dalla data di fine originale nella cella E17 (05/06/2016). Ecco come è fatto: in primo luogo, la funzione DATA crea la data 05/01/2016. Viene creato utilizzando l'anno nella cella E17 e il mese nella cella E17. 1 indica il primo giorno del mese. Il risultato della funzione DATA sarà il 05/01/2016. Quindi sottraiamo tale data dalla data di fine originale nella cella E17 (5/6/2016), ottenendo 5 giorni.

4. Facoltativo: combina le tre formule in una.


Puoi inserire tutti e tre i calcoli in una cella, come mostrato in questo esempio. Utilizzo di e commerciali, virgolette e testo. È una formula di input più lunga, ma almeno è tutto in uno di essi. Consigli. Premi Alt+Invio per inserire interruzioni di riga nella formula. Questo facilita la lettura. Inoltre, se non riesci a visualizzare l'intera formula, premi CTRL+MAIUSC+U.

Scarica esempi

Puoi scaricare un libro di esempio con tutti gli esempi in questo articolo. Puoi iscriverti a loro o creare le tue formule.

Altri calcoli di data e ora

Calcolo tra oggi e un'altra data

Come mostrato sopra, la funzione DIFFERENT calcola la differenza tra una data di inizio e una data di fine. Tuttavia, invece di inserire date specifiche, puoi anche utilizzare la funzione Oggi() nella formula. Quando si utilizza la funzione OGGI(), Excel utilizza la data corrente sul computer. Tieni presente che se riapri il file in futuro, quel file cambierà.


Calcolo dei giorni lavorativi con o senza ferie

Usa GIORNI DELLA RETE. INTL se vuoi calcolare il numero di giorni lavorativi tra due date. Inoltre, puoi anche escludere i fine settimana e i giorni festivi.

Prima di iniziare, procedi come segue: Decidi se escludere le date delle vacanze. In tal caso, inserire un elenco di date delle vacanze in un'area o in un foglio separato. Ogni giorno festivo viene inserito in una cella separata. Quindi evidenzia quelle celle e quindi seleziona formule _Gr_ assegnare nome. nominare l'intervallo miholidice e premere il pulsante ok. Quindi creare una formula procedendo come segue:

1. Immettere una data di inizio e una data di fine.


In questo esempio, la data di inizio è nella cella D53 e la data di fine è nella cella E53.

2. In un'altra cella, inserisci la formula, ad esempio:


Immettere una formula, come l'esempio sopra. L'1 nella formula definisce "sabato" e "domenica" come festivi e li esclude dal totale.

Nota. non ci sono GIORNI DELLA RETE in Excel 2007. INTERNAZIONALE Tuttavia, ha NETWORKDAYS. L'esempio sopra sarebbe simile a questo in Excel 2007: = GIORNI RETE (G53, E53). Non specifichi 1 perché NETWORKDAYS presuppone che il fine settimana sia sabato e domenica.

3. Modificare il valore 1 se necessario.


Se sabato e domenica non sono giorni festivi, modificare il valore 1 in qualcos'altro nell'elenco IntelliSense. Ad esempio, 2 imposta domenica e lunedì come festivi.

Se stai usando Excel 2007, salta questo passaggio. La funzione NETWORKDAYS in Excel 2007 presuppone sempre che i fine settimana siano sabato e domenica.

4. Immettere un nome per l'intervallo festivo.


Se hai creato il nome di un intervallo di ferie nella sezione Guida introduttiva sopra, inseriscilo alla fine come mostrato di seguito. Se non hai ferie, puoi omettere la virgola e Myholidays. Se stai usando Excel 2007, l'esempio sopra sarebbe simile a questo: = GIORNI DELLA RETE (G53, E53, myholidice).

Piuma Se non vuoi fare riferimento al nome dell'intervallo delle vacanze, puoi anche inserire un intervallo come D35:E:39. In alternativa, puoi inserire ogni festività nella formula. Ad esempio, se le festività sono il 1 e il 2 gennaio 2016, inserirle come segue: = GIORNI DELLA RETE. Int (D53, E53, 1, ("1/1/2016", "2/1/2016")). In Excel 2007 apparirà così: = GIORNI RETE(G53, E53, ("1/1/2016", "1/2 . 2016"})

Calcolo del tempo trascorso

Per calcolare il tempo trascorso, puoi sottrarre una volta dall'altra. Innanzitutto, inserisci un'ora di inizio in una cella e un'ora di fine in un'altra. Assicurati che tutti gli orari, inclusi ore, minuti e spazi, siano compilati prima di mezzogiorno o pomeriggio. Ecco cosa devi fare per questo:

1. Immettere l'ora di inizio e l'ora di fine.


In questo esempio, l'ora di inizio è nella cella D80 e l'ora di fine è nella cella E80. Assicurati di inserire ore, minuti e spazi prima dei caratteri AM e PM.

2. Impostare il formato su h/pm.


Seleziona entrambe le date e premi CTRL+1 (o +1 su Mac). Assicurati che sia selezionata un'opzione costume _gt_ h/pm se non è già installato.

3. sottrazione di due valori.


In un'altra cella, sottrai la cella di inizio dalla cella "ora di fine".

4. Impostare il formato su h.


Premi CTRL+1 (o +1 su Mac). Selezionare " costume _rm_" per escludere i risultati "AM" e "PM" da esso.

Per eseguire determinate attività in Excel, è necessario determinare quanti giorni sono trascorsi tra determinate date. Fortunatamente, il programma dispone di strumenti in grado di risolvere questo problema. Scopriamo come calcolare la differenza di data in Excel.

Prima di iniziare a lavorare con le date, devi formattare le celle per questo formato. Nella maggior parte dei casi, quando si immette un set di caratteri che assomiglia a una data, la cella si riformatta da sola. Ma è comunque meglio farlo manualmente per assicurarti contro le sorprese.


Ora tutti i dati che saranno contenuti nelle celle selezionate verranno riconosciuti dal programma come data.

Metodo 1: calcolo semplice

Il modo più semplice per calcolare la differenza di giorni tra le date è con una semplice formula.


Metodo 2: funzione RAZDAT

È inoltre possibile utilizzare una funzione speciale per calcolare la differenza di date RAZDAT. Il problema è che non è nell'elenco della procedura guidata, quindi devi inserire la formula manualmente. La sua sintassi è simile a questa:

RAZDAT(data_inizio, data_fine, unità)

"Unità"- questo è il formato in cui verrà visualizzato il risultato nella cella selezionata. Il simbolo utilizzato in questo parametro determina le unità in cui verrà restituito il totale:

  • "y" - anni interi;
  • "m" - mesi completi;
  • "d" - giorni;
  • "YM" - differenza in mesi;
  • "MD" - la differenza in giorni (mesi e anni non vengono presi in considerazione);
  • "YD" - la differenza in giorni (gli anni non vengono presi in considerazione).

È inoltre necessario notare che, a differenza del metodo della formula semplice descritto sopra, quando si utilizza questa funzione, la data di inizio deve essere al primo posto e la data di fine deve essere al secondo. In caso contrario, i calcoli saranno errati.


Metodo 3: calcolo del numero di giorni lavorativi

Excel ha anche la possibilità di calcolare i giorni lavorativi tra due date, ovvero esclusi i fine settimana e i giorni festivi. Per questo, viene utilizzata la funzione CHISTRABNI. A differenza dell'istruzione precedente, è elencata nella Creazione guidata funzioni. La sintassi per questa funzione è:

NETWORKDAYS(data_inizio, data_fine, [festivi])

In questa funzione, gli argomenti principali sono gli stessi dell'operatore RAZDAT- data di inizio e di fine. Inoltre, c'è un argomento facoltativo "Vacanze".

Dovrebbe essere sostituito dalle date dei giorni festivi, se presenti, per il periodo coperto. La funzione calcola tutti i giorni dell'intervallo specificato, esclusi i sabati, le domeniche e anche quei giorni aggiunti dall'utente all'argomento "Vacanze".


Dopo le suddette manipolazioni, nella cella preselezionata verrà visualizzato il numero di giorni lavorativi per il periodo specificato.

Come puoi vedere, il programma Excel fornisce ai suoi utenti uno strumento abbastanza conveniente per calcolare il numero di giorni tra due date. Allo stesso tempo, se hai solo bisogno di calcolare la differenza in giorni, l'opzione migliore sarebbe usare una semplice formula di sottrazione, piuttosto che usare la funzione RAZDAT. Ma se hai bisogno, ad esempio, di calcolare il numero di giorni lavorativi, la funzione verrà in soccorso GIORNI DI RETE. Cioè, come sempre, l'utente dovrebbe decidere lo strumento di esecuzione dopo aver impostato un'attività specifica.

Per calcolare la durata degli intervalli di tempo, è più conveniente utilizzare la funzione non documentata RAZDAT ( ) , la versione inglese di DATEDIF().

La funzione RAZDAT() non è nella guida di EXCEL2007 e in Procedura guidata di funzione (CAMBIO+ F3 ), ma funziona, anche se non senza un difetto.

Sintassi della funzione:

RAZDAT(data_inizio; data_fine; metodo_misura)

Discussione data d'inizio deve essere prima dell'argomento data finale.

Discussione metodo_di_misurazione determina come e in quali unità verrà misurato l'intervallo tra le date di inizio e di fine. Questo argomento può assumere i seguenti valori:

Senso

Descrizione

differenza di giorni

differenza di un mese intero

differenza di un anno intero

differenza in mesi interi esclusi gli anni

differenza di giorni esclusi mesi e anni
ATTENZIONE! La funzione per alcune versioni di EXCEL restituisce un valore errato se il giorno della data di inizio è maggiore del giorno della data di fine (ad esempio, in EXCEL 2007, quando si confrontano le date 28/02/2009 e 01/03/2009 , il risultato sarà 4 giorni, non 1 giorno). Evita di usare una funzione con questo argomento. Di seguito è mostrata una formula alternativa.

differenza di giorni esclusi gli anni
ATTENZIONE! La funzione per alcune versioni di EXCEL restituisce un valore errato. Evita di usare una funzione con questo argomento.

Di seguito è riportata una descrizione dettagliata di tutti e 6 i valori degli argomenti metodo_di_misurazione, così come formule alternative (la funzione RAZDAT() può essere sostituita con altre formule (anche se piuttosto macchinose). Ciò avviene nel file di esempio).

Nel file di esempio, il valore dell'argomento data d'inizio messo in una cella A2 e il valore dell'argomento data finale- in una cella IN 2 .

1. Differenza in giorni ("d")

La formula =RADIDAT(A2;B2;"d") restituirà la semplice differenza in giorni tra due date.

Esempio 1:data d'inizio 25.02.2007, data finale 26.02.2007
Risultato: 1 giorno).

Questo esempio mostra che quando si calcola l'anzianità è necessario utilizzare con attenzione la funzione RAZDAT(). Ovviamente, se il dipendente ha lavorato il 25 e 26 febbraio, allora ha lavorato 2 giorni, non 1. Lo stesso vale per il calcolo dei mesi interi (vedi sotto).

Esempio2:data d'inizio 01.02.2007, data finale 01.03.2007
Risultato: 28 (giorni)

Esempio3:data d'inizio 28.02.2008, data finale 01.03.2008
Risultato: 2 (giorni), perché Il 2008 è un anno bisestile

Nota: Se sei interessato solo ai giorni lavorativi, allora k tra due date può essere calcolato usando la formula = GIORNI RETE (B2, A2)

2. Differenza in mesi interi ("m")

La formula =RAZDAT(A2;B2;"m") restituirà il numero di mesi interi tra due date.

Esempio 1:data d'inizio 01.02.2007, data finale 01.03.2007
Risultato: 1 mese)

Esempio2:data d'inizio 01.03.2007, data finale 31.03.2007
Risultato: 0

Nel calcolo dell'anzianità di servizio, si considera che un dipendente che ha lavorato tutti i giorni del mese abbia lavorato 1 mese intero. La funzione RAZDAT() non la pensa così!

Esempio3:data d'inizio 01.02.2007, data finale 01.03.2009
Risultato: 25 mesi


=12*(ANNO(B2)-ANNO(A2))-(MESE(A2)-MESE(B2))-(GIORNO(B2)<ДЕНЬ(A2))

Attenzione: Nella guida di MS EXCEL (vedi sezione Calcolo dell'età) c'è una formula curva per calcolare il numero di mesi tra 2 date:

=(ANNO(TODATE())-ANNO(A3))*12+MESE(TODATE())-MESE(A3)

Se invece della funzione TDATE () - la data corrente, usa la data 31/10/1961 e inserisci 01/11/1962 in A3, la formula restituirà 13, sebbene in realtà siano trascorsi 12 mesi e 1 giorno ( novembre e dicembre nel 1961 + 10 mesi nel 1962) .

3. Differenza in anni interi ("y")

La formula =RAZDAT(A2;B2;"y") restituirà il numero di anni completi tra due date.

Esempio 1:data d'inizio 01.02.2007, data finale 01.03.2009
Risultato: 2 anni)

Esempio2:data d'inizio 01.04.2007, data finale 01.03.2009
Risultato: 1 anno)

La formula può essere sostituita con un'espressione alternativa:
=SE(DATA(ANNO(B2),MESE(A2),GIORNO(A2))<=B2;
ANNO(B2)-ANNO(A2);ANNO(B2)-ANNO(A2)-1)

4. Differenza in mesi interi esclusi gli anni ("ym")

La formula =RAZDAT(A2;B2;"ym") restituirà il numero di mesi interi tra due date, esclusi gli anni (vedi esempi sotto).

Esempio 1:data d'inizio 01.02.2007, data finale 01.03.2009
Risultato: 1 (mese), perché si confrontano la data di fine 01.03.2009 e la data di inizio modificata 01.02. 2009 (l'anno della data di inizio è sostituito dall'anno della data di fine, perché 01.02 è inferiore a 01.03)

Esempio2:data d'inizio 01.04.2007, data finale 01.03.2009
Risultato: 11 (mesi), come si confrontano la data di fine 03/01/2009 e la data di inizio modificata 01/04. 2008 (l'anno della data di inizio è sostituito dall'anno della data di fine meno 1 anno, perché 01.04 più di 01.03)

La formula può essere sostituita con un'espressione alternativa:
=MOD(C7,12)
In una cella C7 deve contenere la differenza in mesi interi (vedi punto 2).

5. Differenza in giorni esclusi mesi e anni ("md")

La formula =RAZDAT(A2;B2;"md") restituirà il numero di giorni tra due date, esclusi mesi e anni. Non è consigliabile utilizzare la funzione RAZDAT() con questo argomento (vedere gli esempi di seguito).

Esempio 1:data d'inizio 01.02.2007, data finale 06.03.2009
Risultato1: 5 (giorni), perché si confrontano la data di fine 03/06/2009 e la data di inizio modificata 01. 03 .2009 (l'anno e il mese della data di inizio sono sostituiti dall'anno e il mese della data di fine, poiché 01 è minore di 06)

Esempio2:data d'inizio 28.02.2007, data finale 28.03.2009
Risultato2: 0, perché si confrontano la data di fine 28/03/2009 e la data di inizio modificata 28. 03 .2009 (l'anno e il mese della data di inizio sono sostituiti dall'anno e il mese della data di fine)

Esempio3:data d'inizio 28.02.2009, data finale 01.03.2009
Risultato3: 4 (giorni) - un risultato completamente incomprensibile e SBAGLIATO. La risposta dovrebbe essere =1. Inoltre, il risultato del calcolo dipende dalla versione EXCEL.

EXCEL versione 2007 con SP3:

Il risultato è di 143 giorni! Più di giorni in un mese!

EXCEL versione 2007:

La differenza tra il 28/02/2009 e il 01/03/2009 è di 4 giorni!

E in EXCEL 2003 con SP3 la formula restituisce il risultato corretto per 1 giorno. Per i valori 31/12/2009 e 01/02/2010 il risultato è generalmente negativo (-2 giorni)!

Non consiglio di usare la formula con il valore dell'argomento sopra. La formula può essere sostituita con un'espressione alternativa:
=SE(GIORNO(A2)>GIORNO(B2);
GIORNO(EOMESE(DATA(B2;-1);0))-GIORNO(A2)+GIORNO(B2);
GIORNO(B2)-GIORNO(A2))

Questa formula è solo un'espressione equivalente (nella maggior parte dei casi) per RAZDAT() con il parametro md. Leggi la correttezza di questa formula nella sezione "Ancora una volta sulla curvatura di RAZDAT ()" di seguito.

6. Differenza in giorni esclusi gli anni ("yd")

La formula =RAZDAT(A2;B2;"yd") restituirà il numero di giorni tra due date, anni esclusi. Se ne sconsiglia l'uso per i motivi indicati nel paragrafo precedente.

Il risultato restituito dalla formula =RAZDAT(A2;B2;"yd") dipende dalla versione di EXCEL.

La formula può essere sostituita con un'espressione alternativa:
=SE(DATA(ANNO(B2),MESE(A2),GIORNO(A2))>B2;
B2-DATA(ANNO(B2)-1,MESE(A2),GIORNO(A2));
B2-DATA(ANNO(B2),MESE(A2),GIORNO(A2)))

Ancora una volta sulla curvatura RAZDAT ()

Troviamo la differenza tra le date 16/03/2015 e 30/01/15. La funzione RAZDAT() con i parametri md e ym calcolerà che la differenza è di 1 mese e 14 giorni. É davvero?

Avendo una formula equivalente a RAZDAT() , si può capire il processo di calcolo. Ovviamente, nel nostro caso, il numero di mesi interi tra le date = 1, cioè tutto febbraio. Per calcolare i giorni, la funzione trova il numero di giorni del mese precedente rispetto alla data di fine, ad es. 28 (la data di fine è marzo, il mese precedente è febbraio e nel 2015 febbraio aveva 28 giorni). Successivamente sottrae il giorno di inizio e aggiunge il giorno di fine date = GIORNO(EOMESE(DATA(B6,-1),0))-GIORNO(A6)+GIORNO(B6), cioè. 28-30+16=14. Secondo noi c'è ancora 1 mese intero tra le date e tutti i giorni di marzo, ovvero 16 giorni, non 14! Questo errore si verifica quando nel mese precedente sono presenti meno giorni rispetto alla data di fine rispetto ai giorni della data di inizio. Come uscire da questa situazione?

Modifichiamo la formula per calcolare i giorni di differenza senza tener conto di mesi e anni:

=IF(GIORNO(A18)>GIORNO(B18),IF((GIORNO(EOMESE(DATA(B18,-1),0))-GIORNO(A18))<0;ДЕНЬ(B18);ДЕНЬ(КОНМЕСЯЦА(ДАТАМЕС(B18;-1);0))-ДЕНЬ(A18)+ДЕНЬ(B18));ДЕНЬ(B18)-ДЕНЬ(A18))

Nell'applicare la nuova funzione bisogna tener conto che la differenza di giorni sarà la stessa per più date di inizio (vedi figura sopra, le date 28-31.01.2015). Negli altri casi, le formule sono equivalenti. Quale formula applicare? Spetta all'utente decidere, a seconda delle condizioni del problema.

Ecco un frammento di codice:

Query = Nuova query("SELECT | SELECT | QUANDO DIFFERENZA DI DATA(&D1, ADDDATE(&D2, GIORNO, 1), GIORNO) - DIFFERENZA DI DATA (INIZIO DEL PERIODO (& G1, MESE), INIZIO DEL PERIODO (AGGIUNGI DATA (& D2 , GIORNO, 1), MESE), GIORNO)< 0 | ТОГДА ДЕНЬ(КОНЕЦПЕРИОДА(&Д1, МЕСЯЦ)) + РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ДЕНЬ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, МЕСЯЦ), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ), ДЕНЬ) | ИНАЧЕ РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ДЕНЬ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, МЕСЯЦ), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ), ДЕНЬ) | КОНЕЦ КАК Дни, | ВЫБОР | КОГДА РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ДЕНЬ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, МЕСЯЦ), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ), ДЕНЬ) < 0 | ТОГДА ВЫБОР | КОГДА РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) < 0 | ТОГДА 12 + РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) | ИНАЧЕ РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) | КОНЕЦ - 1 | ИНАЧЕ ВЫБОР | КОГДА РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) < 0 | ТОГДА 12 + РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) | ИНАЧЕ РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) | КОНЕЦ | КОНЕЦ КАК Месяцы, | ВЫБОР | КОГДА РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), МЕСЯЦ) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&Д1, ГОД), НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД), МЕСЯЦ) < 0 | ТОГДА РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД) - 1 | ИНАЧЕ РАЗНОСТЬДАТ(&Д1, ДОБАВИТЬКДАТЕ(&Д2, ДЕНЬ, 1), ГОД) | КОНЕЦ КАК Годы"); Запрос.УстановитьПараметр("Д2",КонечнаяДата); Запрос.УстановитьПараметр("Д1",НачальнаяДата); ТабДМГ=Запрос.Выполнить().Выгрузить(); Стр = ТабДМГ; Сообщить("Разность дат составляет: "+Стр.Дни+" дней "+Стр.Месяцы+" месяцев "+Стр.Годы+" лет ");

Naturalmente, puoi anche aggiungere l'ortografia corretta di giorni, mesi e anni, a seconda del numero. Ma questo è un altro argomento.

Qui calcoliamo:

* per giorni- prendiamo il numero totale di giorni nell'intervallo e sottraiamo il numero di giorni già presi in considerazione, e questa è la differenza tra gli inizi dei nostri mesi dalle date. Questo numero sarà preso in considerazione nella linea con il calcolo del mese. Ma quando calcoliamo i giorni, controlliamo il numero di giorni ricevuti per la negatività. Se il numero di giorni è negativo, allora siamo passati al mese successivo, ma in realtà il mese tra le date non è ancora trascorso. Per tenere conto di ciò, al numero negativo di giorni aggiungiamo il numero di giorni nel mese della prima data.

*per mesi- prendiamo anche il numero totale di mesi e sottraiamo il numero di mesi già presi in considerazione, e questa è la differenza tra gli inizi delle nostre gambe. Questo numero sarà preso in considerazione anche in linea con il calcolo dell'anno. Ma quando calcoliamo il mese, controlliamo anche il numero di mesi ricevuti per negatività. Se il numero di mesi è negativo, allora siamo passati a un nuovo anno, ma in realtà l'anno tra le date non è ancora passato. Per tenere conto di ciò, aggiungiamo 12 al numero negativo di mesi.

* per l'anno- prendi il numero di anni tra le date. Ma se il numero di mesi è negativo, sottraiamo un anno, perché non è ancora passato.

E aggiungo un giorno alla seconda data, perché Ho bisogno che quest'ultimo giorno sia incluso nel calcolo.

In qualche modo così. Se ci sono domande - scrivi.