Oppure

Loading
16/01 15:39
alip1
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:
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:

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 16/01 15:43
aaa
16/01 18:13
Carlo
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:
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#:
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
17/01 10:19
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

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 nessuno 17/01 11:07
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
19/01 18:30
nessuno
Non ti servono le risposte? Ma allora perché fare le domande nel forum?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
28/02 8:26
alip1
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

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
aaa
28/02 8:28
alip1
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
aaa
28/02 9:43
alip1
in ogni caso ho risolto così:
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...

aaa