
alip1 (Normal User)
Pro
    
Messaggi: 145
Iscritto: 12/08/2019
|
Buon pomeriggio a tutti. Chiedo scusa ma mi è partita 2 volte e non so come cancellarne una.
Intanto mi scuserete se posto questa domanda in questo forum, non avendone trovato uno specifico relativamente a DB.
In Sql ho due tabelle collegate con un certo numero di campi:
Facendo questa query:
Codice sorgente - presumibilmente VB.NET |
use [Office4u] go SET DATEFORMAT dmy; select idViaggio, IDAutoDipe, fkIdAutoDipe, dbo.O4uTbAutoDipe.DataModi as AutoDataModifica from dbo.O4uTbViaggi Inner join dbo.O4uTbAutoDipe ON dbo.O4uTbViaggi.fkIdAutoDipe=dbo.O4uTbAutoDipe.IDDipe where dbo.O4uTbViaggi.DataModi <= getdate() order by dbo.O4uTbAutoDipe.DataModi asc
|
Ottengo 41 records come da figura1 allegata. Mentre se eseguo la query utilizzando DateADD mi restituisce 0 records.
Questa la query modificata:
Codice sorgente - presumibilmente VB.NET |
use [Office4u] go SET DATEFORMAT dmy; select idViaggio, IDAutoDipe, fkIdAutoDipe, dbo.O4uTbAutoDipe.DataModi as AutoDataModifica from dbo.O4uTbViaggi Inner join dbo.O4uTbAutoDipe ON dbo.O4uTbViaggi.fkIdAutoDipe=dbo.O4uTbAutoDipe.IDDipe where dbo.O4uTbViaggi.DataModi <= DateAdd(Month,-12,getdate()) order by dbo.O4uTbAutoDipe.DataModi asc
|
Il DateAddDateAdd(Month,-12,getdate()) mi dovrebbe restituire '16-01-2023' e quindi mi dovrebbe restituire gli stessi records . Dove sbaglio?? Grazie per ogni aiuto Ultima modifica effettuata da alip1 il 16/01/2024 alle 16:43 |
|

Carlo (Member)
Guru^2
    
Messaggi: 1422
Iscritto: 29/01/2018
|
Postato originariamente da alip1:
Il DateAddDateAdd(Month,-12,getdate()) mi dovrebbe restituire '16-01-2023' e quindi mi dovrebbe restituire gli stessi records . Dove sbaglio?? Grazie per ogni aiuto |
Potrebbe essere un cambio di formattazione data.
Devi controllare come restituisce la data getdate().
Se è una stringa, dopo aver fatto DateAdd la data sarà: "16/01/2023" ma nel metodo ToString puoi rimettere tutto a posto.
In VB .Net:
Codice sorgente - presumibilmente VB.NET |
Dim getdate As DateTime = Convert.ToDateTime("16-01-2024") ' simulazione Dim Data As String = DateAdd(DateInterval.Month, -12, getdate).ToString("dd-MM-yyyy")
|
In C#:
Codice sorgente - presumibilmente C# / VB.NET |
DateTime getdate = Convert.ToDateTime("16-01-2024"); // simulazione
string data = getdate.AddMonths(-12).ToString("dd-MM-yyyy");
|
Se getdate() retituisce un DateTime non ci devono essere problemi.
in programmazione tutto è permesso |
|

()
Newbie
    
Messaggi:
Iscritto:
|
In realtà dovrebbe funzionare (e funziona perchè l'ho provato sui miei server), il problema deve essere da qualche altra parte.
Il tipo di dato del campo DataModi è DateTime?
Se vuoi proporre uno zip del DB o una esportazione della tabella, posso provare praticamente
Per una prova semplice prova ad eseguire
Codice sorgente - presumibilmente C# / VB.NET |
SELECT dbo.O4uTbAutoDipe.DataModi as AutoDataModifica
WHERE dbo.O4uTbViaggi.DataModi <= DateAdd(Month,-12,getdate())
ORDER BY dbo.O4uTbAutoDipe.DataModi ASC
|
e vedi se viene eseguita correttamente
Ultima modifica effettuata da il 17/01/2024 alle 12:07 |
|

()
Newbie
    
Messaggi:
Iscritto:
|
Non ti servono le risposte? Ma allora perché fare le domande nel forum?
|
|

alip1 (Normal User)
Pro
    
Messaggi: 145
Iscritto: 12/08/2019
|
Postato originariamente da nessuno:
In realtà dovrebbe funzionare (e funziona perchè l'ho provato sui miei server), il problema deve essere da qualche altra parte.
Il tipo di dato del campo DataModi è DateTime?
Se vuoi proporre uno zip del DB o una esportazione della tabella, posso provare praticamente
Per una prova semplice prova ad eseguire
Codice sorgente - presumibilmente C# / VB.NET |
SELECT dbo.O4uTbAutoDipe.DataModi as AutoDataModifica
WHERE dbo.O4uTbViaggi.DataModi <= DateAdd(Month,-12,getdate())
ORDER BY dbo.O4uTbAutoDipe.DataModi ASC
|
e vedi se viene eseguita correttamente |
trattandosi di 2 tabelle manca l'inner join ed in ogni caso da 0 record.... il datamodi è datetime
|
|

alip1 (Normal User)
Pro
    
Messaggi: 145
Iscritto: 12/08/2019
|
Postato originariamente da nessuno:
Non ti servono le risposte? Ma allora perché fare le domande nel forum? |
non è che non mi servono risposte ma avendo ottenute risposte non adeguate ed avendo dovuto risolvere in tempi brevi... ipoi ci si dimentica
scusami non volevo essere scortese con nessuno |
|

alip1 (Normal User)
Pro
    
Messaggi: 145
Iscritto: 12/08/2019
|
in ogni caso ho risolto così:
Codice sorgente - presumibilmente VB.NET |
use [Office4u] go DECLARE @DataRif date SET @DataRif = getdate() SET DATEFORMAT dmy; SET @DataRif = DateAdd(m,-12, getdate() ) select idViaggio, IDAutoDipe, fkIdAutoDipe, dbo.O4uTbAutoDipe.DataModi as AutoDataModifica from dbo.O4uTbViaggi Inner join dbo.O4uTbAutoDipe ON dbo.O4uTbViaggi.fkIdAutoDipe=dbo.O4uTbAutoDipe.IDAutoDipe where Format(dbo.O4uTbAutoDipe.DataModi,'yyyy-mm-dd') <= format(@DataRif,'yyyy-mm-dd') order by dbo.O4uTbAutoDipe.DataModi asc
|
in pratica T-sql non riusciva a confrontare le date.... convertire in stringhe nel formato corretto...
|
|