>avrei bisogno di un vostro aiuto per creare una query di ricerca
>su un campo data.
Ciao Luca,
Iniziamo a preparare un piccolo esempio:
USE tempdb;
CREATE TABLE dbo.myData(
DataID int NOT NULL IDENTITY PRIMARY KEY,
Date datetime NOT NULL
);
INSERT dbo.myData VALUES('20070531');
INSERT dbo.myData VALUES('20070601');
INSERT dbo.myData VALUES('20070603');
INSERT dbo.myData VALUES('20070606');
INSERT dbo.myData VALUES('20070607');
INSERT dbo.myData VALUES('20050304');
INSERT dbo.myData VALUES('20040308');
INSERT dbo.myData VALUES('20060406');
INSERT dbo.myData VALUES('20070906');
INSERT dbo.myData VALUES('20070510');
INSERT dbo.myData VALUES('20070510 09:59:59.997');
INSERT dbo.myData VALUES('20070510 10:00');
INSERT dbo.myData VALUES('20070510 13:59:59.997');
INSERT dbo.myData VALUES('20070510 14:00');
INSERT dbo.myData VALUES('20070510 14:00:00.333');
INSERT dbo.myData VALUES('20060611 09:59:59.997');
INSERT dbo.myData VALUES('20060611 10:00');
INSERT dbo.myData VALUES('20060611 13:59:59.997');
INSERT dbo.myData VALUES('20060611 14:00');
INSERT dbo.myData VALUES('20060611 14:00:00.333');
>Quello che non riesco a realizzare sono query del tipo
>
>1) Tutti i record che fanno parte della prima settimana di ogni
>mese (1/7 maggio + 1/7 giugno + ecc ecc)
SELECT *
FROM dbo.myData
WHERE DAY(Date) BETWEEN 1 AND 7;
/* Output:
DataID Date
----------- -----------------------
2 2007-06-01 00:00:00.000
3 2007-06-03 00:00:00.000
4 2007-06-06 00:00:00.000
5 2007-06-07 00:00:00.000
6 2005-03-04 00:00:00.000
8 2006-04-06 00:00:00.000
9 2007-09-06 00:00:00.000
(7 row(s) affected)
*/
>2) I record del 6 di ogni mese
SELECT *
FROM dbo.myData
WHERE DAY(Date) = 6;
/* Output:
DataID Date
----------- -----------------------
4 2007-06-06 00:00:00.000
8 2006-04-06 00:00:00.000
9 2007-09-06 00:00:00.000
(3 row(s) affected)
*/
>3) I record del giorno 10 ed 11 tra le 10 e le 14 di ogni mese.
SELECT *
FROM dbo.myData
WHERE DAY(Date) BETWEEN 10 AND 11
AND CAST(CONVERT(varchar, Date, 114) AS datetime)
BETWEEN '10:00' AND '13:59:59.997';
/* Output:
DataID Date
----------- -----------------------
12 2007-05-10 10:00:00.000
13 2007-05-10 13:59:59.997
17 2006-06-11 10:00:00.000
18 2006-06-11 13:59:59.997
(4 row(s) affected)
*/
Per maggiore dettagli consulta i Books Online.
>Grazie 1000 per l'aiuto,
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org