>SQL Server Express 2005.... ed ho provato anche con MYSQL
Now() non esiste in SQL Server...
>come diventerebbe con T-SQL?
Allora, SQL Server 2005 offre due data types per la memorizzazione delle date: datetime e smalldatetime.
datetime
--------
Range di validità: 1 gennaio 1753 - 31 dicembre 9999 con una precisione pari a 0.00333 secondi.
Bytes occupati: 8 (2 coppie di interi di 4 bytes)
- i primi 4 per la memorizzazione dei giorni prima o dopo l'1 gennaio 1900
- gli altri 4 per la memorizzazione dei millisecondi dopo la mezzanotte
smalldatetime
-------------
Range di validità: 1 gennaio 1900 - 6 giugno 2079 con una precisione al minuto.
Bytes occupati: 4 (2 coppie di interi di 2 bytes)
- i primi 2 per la memorizzazione dei giorni dopo l'1 gennaio 1900
- gli altri 2 per la memorizzazione dei minuti dopo la mezzanotte
Come vedi le date sono memorizzate internamente come 2 coppie di interi.
Se vuoi restituire un set di righe compreso tra due date devi ricordarti di considerare anche la componente oraria, altrimenti rischi di escludere tutte quelle righe la cui data risulta essere antecedente o successiva all'ora specificata.
In questo articolo, Tibor ti spiega le varie tecniche che puoi utilizzare:
http://www.karaszi.com/SQLServer/info_datetime.asp#Searching
Supponendo di voler considerare tutte le righe di marzo, il metodo più semplice ed efficiente consiste nell'utilizzare una clausola di WHERE simile a:
WHERE dt >= '20040301' AND dt < '20040401'
Come vedi considero tutte le righe con data maggiore o uguale alla mezzanotte dell'1 marzo e minore della mezzanotte dell'1 aprile.
>Grazie in anticipo
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org