Risolto Richiamare date tra ieri e oggi

samueler

Utente abituale
9 Luglio 2019
100
18
23
Brescia
Office 2019
2
klingklang @klingklang e scossa @scossa Perdonatemi, ma ho nuovamente bisogno di voi.

Ora avrei bisogno di visualizzare i dati di una settimana (7 giorni), come modifico il seguente codice?

WHERE (DATEADD(Day, DATEDIFF(Day, 0, P.dp_datain), 0) = DATEADD(Day, DATEDIFF(Day, 1, GETDATE()), 0))

alfrimpa @alfrimpa Ho aperto una discussione già risolta, si può fare vero? Ho letto il REGOLAMENTO e non ho trovato nulla che lo vietasse.
 

klingklang

Excel/Power BI Expert
Expert
20 Ottobre 2017
5.956
245
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
447
Ora avrei bisogno di visualizzare i dati di una settimana (7 giorni), come modifico il seguente codice?

WHERE (DATEADD(Day, DATEDIFF(Day, 0, P.dp_datain), 0) = DATEADD(Day, DATEDIFF(Day, 1, GETDATE()), 0))
Ciao, perdonami ma hai trascritto la clausola senza preoccuparti di capire come funziona, da un anno a questa parte? C'è solo un numero da cambiare: ti invito a fare un piccolo sforzo e individuarlo da solo, perché altrimenti non imparerai mai a fare il debug delle tue query

EDIT - mi correggo parzialmente: non è così semplice la modifica, ma almeno avevi capito come funzionava la precedente?

Io proverei con:
SQL:
WHERE (DATEADD(Day, DATEDIFF(Day, 0, P.dp_datain), 0) >= DATEADD(Day, DATEDIFF(Day, 7, GETDATE()), 0))
 
Ultima modifica:

samueler

Utente abituale
9 Luglio 2019
100
18
23
Brescia
Office 2019
2
Ora avrei bisogno di visualizzare i dati di una settimana (7 giorni), come modifico il seguente codice?

WHERE (DATEADD(Day, DATEDIFF(Day, 0, P.dp_datain), 0) = DATEADD(Day, DATEDIFF(Day, 1, GETDATE()), 0))
Ciao, perdonami ma hai trascritto la clausola senza preoccuparti di capire come funziona, da un anno a questa parte? C'è solo un numero da cambiare: ti invito a fare un piccolo sforzo e individuarlo da solo, perché altrimenti non imparerai mai a fare il debug delle tue query

EDIT - mi correggo parzialmente: non è così semplice la modifica, ma almeno avevi capito come funzionava la precedente?

Io proverei con:
SQL:
WHERE (DATEADD(Day, DATEDIFF(Day, 0, P.dp_datain), 0) >= DATEADD(Day, DATEDIFF(Day, 7, GETDATE()), 0))
Sinceramente? Avevo fretta e dovevo ottenere il dato nel più breve tempo possibile, quindi non mi sono interessato al codice che mi avete fornito.

Ho provato anche io "stupidamente" a cambiare il numero da 1 a 7 ma non funzionava.


Riusciresti a spiegarmelo?
 

klingklang

Excel/Power BI Expert
Expert
20 Ottobre 2017
5.956
245
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
447
Questa sintassi molto farraginosa è necessaria per versioni molto vecchie di SQL server, che non avevano il tipo date.

La parte

DATEADD(Day, datainiziale, 0)

praticamente aggiunge 0 giorni alla tua data iniziale. Che nel tuo caso è:

DATEDIFF(Day, 0, P.dp_datain)

ovvero la differenza, in giorni, tra il giorno 0 e il campo dp_datain della tua tabella.

In pratica, quest'ultima parte restituisce il numero di giorni trascorsi dalla data 0 (il 1 gennaio 1900) alla data della tua colonna. Mettiamo che sia 43510. La parte esterna della formula (DATEADD) aggiunge zero giorni a questo numero, trasformandolo al contempo in data. Tutto questo serve per poter considerare il giorno intero, eliminando la parte dell'ora.
Nella seconda formula, il DATEDIFF non parte dal giorno 0 ma dal giorno 1, o in quest'ultimo caso dal giorno 7, quindi il risultato di DATEDIFF sarà il numero di giorni trascorsi dal giorno 1, o dal giorno 7, ovvero la data di ieri, o di una settimana fa
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!