View Full Version : [SqlServer] Query Temporale
Ciao ragazzi,
vi spiego il mio problema:
Ho la necessita di includere nella clausola where una condizione tale che mi tiri fuori dei record facendo riferimento alla colonna "date",
dalla data attuale(ho pensato a "getdate") -(meno) 12h o 24h inditro nel tempo.
E' possibile?
Grazie in anticipo :)
yorkeiser
01-04-2009, 16:06
Certamente
Ciao ragazzi,
vi spiego il mio problema:
Ho la necessita di includere nella clausola where una condizione tale che mi tiri fuori dei record facendo riferimento alla colonna "date",
dalla data attuale(ho pensato a "getdate") -(meno) 12h o 24h inditro nel tempo.
E' possibile?
Grazie in anticipo :)
non basta metterci un and??
comunque se utilizzi phpmyadmin tu utilizzi i suoi form per creare una query e lui ti da il codice!
Certamente
Come? :)
L'ambiente il db e' SQLServer 2005
yorkeiser
01-04-2009, 16:21
Premettendo la mia totale ruggine su sqlServer e premettendo che non so in che formato sono le date nella colonna date:
supponendo che le date siano già in formato data (e non una stringa), come tu stesso hai detto puoi usare la getdate(), che appunto ritorna la data del server, e sommare/decrementare tale data.
Ad esempio, se non ricordo male, getdate()-1 ritorna la data di ieri.
Queste ovviamente sono da mettere nella clausola where (eventualmente in AND con altre condizioni, se ne hai).
Esempio: il campo DATE deve essere inferiore alla data dell'altro ieri:
WHERE date < getdate()-2.
Almeno, se non ricordo male ;)
Premettendo la mia totale ruggine su sqlServer e premettendo che non so in che formato sono le date nella colonna date:
supponendo che le date siano già in formato data (e non una stringa), come tu stesso hai detto puoi usare la getdate(), che appunto ritorna la data del server, e sommare/decrementare tale data.
Ad esempio, se non ricordo male, getdate()-1 ritorna la data di ieri.
Queste ovviamente sono da mettere nella clausola where (eventualmente in AND con altre condizioni, se ne hai).
Esempio: il campo DATE deve essere inferiore alla data dell'altro ieri:
WHERE date < getdate()-2.
Almeno, se non ricordo male ;)
Prima di tutto, ti ringrazio secondo in risposta alla tua domanda ti dico che il campo date e' di tipo "datetime" cmq ho provato ad eseguire la condizione ma sembra quasi non farci caso, mi restituisce tutti i valori e non il valore date < getdate()-n
Strano, no?
yorkeiser
02-04-2009, 09:04
Fa una prova con le funzioni year(), month() e day(), che restituiscono rispettivamente l'anno, il mese e il giorno della data che gli passi.
Quindi, DATE minore dell'altro ieri verrebbe scritta come
where year(getdate())=year(DATE) and month(getdate())=month(DATE) and day(DATE)<day(getdate())-2
Questa andrebbe raffinata (ad esempio, non funziona per mesi/anni differenti e per i primi due giorni del mese, ma almeno per i giorni dello stesso mese dovrebbe fare già una scrematura).
Controlla anche che la data del server sia giusta.
Purtroppo, non ho modo di verificarla visto che qui non ho installato SqlServer.
In caso non dovesse funzionarti neanche questa, prova a postare tutta la query, magari l'errore è altrove.
WHERE DATETIFF(d, NomeTabella.NomeCampoData, GETDATE()) >= 2
non testato, però a rigor di logica dovrebbe funzicare (anche perchè mi sembra di averlo già usato)!
ps:Riferimento MSDN a DATEDIFF (http://msdn.microsoft.com/en-us/library/aa258269(SQL.80).aspx)
dovrebbe funzionare anche
WHERE DATEADD(d, 2, NomeTabella.NomeCampoData) <= GETDATE()
Ovviamente se non ti interessa che l'estremo sia compreso basta togliere l'uguale :P
ps: Riferimento MSDN a DATEADD (http://msdn.microsoft.com/it-it/library/ms186819.aspx)
però anche il primo consiglio di yorkeiser dovrebbe essere corretto...
WHERE DATETIFF(d, NomeTabella.NomeCampoData, GETDATE()) >= 2
non testato, però a rigor di logica dovrebbe funzicare (anche perchè mi sembra di averlo già usato)!
ps:Riferimento MSDN a DATEDIFF (http://msdn.microsoft.com/en-us/library/aa258269(SQL.80).aspx)
Ho fatto esattamente così, grazie mille :)
Ho fatto esattamente così, grazie mille :)
prego :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.