Confronto di date in SQL Server

Un problema che si incontra spesso in SQL Server, quando bisogna effettuare delle query che effettuano il confronto su due campi di tipo DateTime, consiste nel fatto che SQL Server, oltre a memorizzare la data, memorizza anche l’orario.  Ad esempio una query del genere potrebbe dare questo tipo di risultato:

 

select Data1, Data2 from MiaTabella where Data1 <= Data2

 

Data1                   Data2

----------------------- -----------------------

2006-11-21 12:38:00     2006-11-23 17:18:00

2006-07-24 10:52:00     2006-07-24 10:52:00

 

A prima vista sembrerebbe corretto, ma c’è la possibilità che si verifichi un errore piuttosto subdolo.

Esistono diverse soluzioni al problema, quella che preferisco è quella di utilizzare la funzione DATEDIFF. Se correggiamo la query in questo modo ci accorgiamo subito di quale era l’errore della prima query.

 

select Data1, Data2 from MiaTabella where DATEDIFF(d, Data2, Data1) <= 0

 

Data1                   Data2

----------------------- -----------------------

2006-11-21 12:38:00     2006-11-23 17:18:00

2006-07-24 10:52:00     2006-07-24 10:52:00

2006-07-25 11:54:00     2006-07-25 11:53:00

 

Technorati Tags: ,

SharePoint 2007 - Query paginate

Quando si eseguono delle query sulle document library di SharePoint, esiste la possibilità di incorrere in un errore piuttosto infido anche dopo molto tempo che il nostro applicativo si trova in produzione. Magari perché quel particolare folder contiene ora più elementi di quanto avevamo previsto o magari perché l’amministratore del sito ha ridotto il limite degli items visualizzabili per quella particolare vista, la nostra query da ora un risultato su più pagine ed il nostro codice non funziona più :-(

Per ovviare a tale situazione è sempre buona norma verificare la proprietà ListItemCollectionPosition ed effettuare un loop finché non ci ritorna il valore NULL.

 

SPSite site = new SPSite("http://myServer:1001/sites/mySite/Documents");

SPWeb web = site.OpenWeb();

SPList list = web.Lists["MiaLista"];

 

SPQuery query = new SPQuery(list.Views["All Items"]);

 

do

{

      SPListItemCollection results = list.GetItems(query);

 

      foreach (SPListItem listItem in results)

      {

            // .... do something

      }

 

      query.ListItemCollectionPosition = results.ListItemCollectionPosition;

} while (query.ListItemCollectionPosition != null);

 

 

Technorati Tags: ,
«novembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789