Recupero dati con data più recente a quella passata in input.

lunedì 05 maggio 2008 - 14.39

Rik142 Profilo | Junior Member

Ciao

preso in input una data (DD-MM-YYYY) devo andare a recuperare le info relative ad un oggetto la cui data sia la più recente a quella da me passata in input.

Come posso fare?

Grazie mille a tutti!!

Ciao

Rik

lbenaglia Profilo | Guru

>preso in input una data (DD-MM-YYYY) devo andare a recuperare
>le info relative ad un oggetto la cui data sia la più recente
>a quella da me passata in input.
>
>Come posso fare?

Ciao Rik,

Con che DBMS stai lavorando?

>Grazie mille a tutti!!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Rik142 Profilo | Junior Member

sto usando sql server.

lbenaglia Profilo | Guru

>sto usando sql server.

La colonna che contiene la data che data type ha?
Inoltre viene memorizzata solo la data o anche l'informazione oraria?

Per ricevere una risposta il più possibile aderente alla realtà, sarebbe SEMPRE opportuno postare un esempio completo con i comandi DDL della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il result set finale che si intende ottenere con quei dati.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Rik142 Profilo | Junior Member

Il tipo di dato della data è un datatime ma l'orario è impostato di default a 00:00 quindi non ha alcuna importanza ai fini della mia ricerca.

Un esempio:

Cod ValoreA ValoreB ValoreC ValoreD DataValut
1 A B C D 01-01-2008

2 E R T Y 02-02-2008

3 L K J W 01-04-2008

Dato in input la data del 15-02-2008 devo andare a recuperare tutte le informazioni relative alla prima data precedente rispetto a quella passata in input.
Ossia:

Output:

Cod ValoreA ValoreB ValoreC ValoreD DataValut

2 E R T Y 02-02-2008



p.s.
Scusate se a livello grafico non si vede in maniera più ordinata rispetto a come lo visualizzavo io in fase di creazione.

lbenaglia Profilo | Guru

>Il tipo di dato della data è un datatime ma l'orario è impostato
>di default a 00:00 quindi non ha alcuna importanza ai fini della
>mia ricerca.
Bene.

>Dato in input la data del 15-02-2008 devo andare a recuperare
>tutte le informazioni relative alla prima data precedente rispetto
>a quella passata in input.
OK, osserva il seguente esempio:

USE tempdb; CREATE TABLE dbo.MyTable( Cod int NOT NULL PRIMARY KEY, ValoreA char(1) NOT NULL, ValoreB char(1) NOT NULL, ValoreC char(1) NOT NULL, ValoreD char(1) NOT NULL, DataValuta datetime NOT NULL ); INSERT dbo.MyTable VALUES(1, 'A', 'B', 'C', 'D', '20080101'); INSERT dbo.MyTable VALUES(2, 'E', 'R', 'T', 'Y', '20080202'); INSERT dbo.MyTable VALUES(3, 'L', 'K', 'J', 'W', '20080401'); SELECT TOP 1 * FROM dbo.MyTable WHERE DataValuta < '20080215' ORDER BY DataValuta DESC; /* Output: Cod ValoreA ValoreB ValoreC ValoreD DataValuta ----------- ------- ------- ------- ------- ----------------------- 2 E R T Y 2008-02-02 00:00:00.000 (1 row(s) affected) */ DROP TABLE dbo.MyTable;

Per non dare adito a fraintendimenti, è opportuno formattare la data seguendo lo standard ANSI SQL 'YYYYMMDD', quindi il tuo 15-02-2008 diventerà '20080215'.
A questo punto è sufficiente filtrare le righe considerando tutte quelle antecedenti a tale data, ordinandole in modo decrescente per data e restituendo la prima occorrenza.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Rik142 Profilo | Junior Member

Grazie mille!!!


Ciao

Rik
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5