>ho la necessità di dividere una tabella, con lo strumento "divisione
>condizionata" di Integration Server, e da una parte, far fluire
>tutti i dati con data del giorno prima. Quale condizione usare?
>Come si scrive data = getdate -1 ?
Ciao Claudio,
In SQL Server i data type datetime e smalldatetime contengono sia la data che l'informazione oraria, pertanto se sottrai 1 a getdate otterrai la data di ieri a quella determinata ora.
Se la tabella contiene sia l'informazione data che quella oraria, corri il rischio di non considerare le righe di ieri successive all'ora di esecuzione del package.
Per ovviare al problema puoi considerare tutte le righe < delle ore 0:00 di oggi.
OK, ma come eliminare la parte oraria?
Puoi utilizzare questo semplice trucchetto:
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) AS OnlyDate;
/* Output:
OnlyDate
-----------------------
2007-03-02 00:00:00.000
(1 row(s) affected)
*/
La DATEDIFF(day, 0, GETDATE()) restituisce il numero di giorni dalla data base (1 gennaio 1900), mentre la DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) aggiunge i giorni appena calcolati alla data base eliminando in questo modo la parte oraria.
>Vi ringrazio anticipatamente
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org