2010-07-16 19 views
2

Titre épouvantable non? Je pensais que Stack overflow est plus rapide que moi tester quelque chose pendant que je reçois mille interruptions d'autres travaux :)Comment dotNet gère-t-il les dates paramétrées où la date programmatique n'a pas de temps mais la date sql a l'heure

Je suis en train de mettre à jour une ancienne application VB net et d'essayer de refactoriser une partie de la logique au fur et à mesure. L'application recherche des données à partir d'une seule date sur plusieurs tables et écrit cette vue dans un fichier.

Rédaction de la requête dans SQL j'obtenir l'équivalent de

SELECT * FROM table 
WHERE CAST(FLOOR(CAST(table.date AS float))AS datetime) = '15-Jul-2010' 

Idéalement j'utiliser

SELECT * FROM table WHERE [email protected] 

et ajoutez un objet date en tant que paramètre à un System.Data.SqlClient .SqlCommand instance

Ces deux sont-ils comparables? Vais-je obtenir les résultats attendus?

+0

Qu'est-ce que le type table.date sql? – Carvellis

Répondre

3

Si les deux sont comparables, la bibliothèque SqlClient convertira les types .net en types sql. Vous auriez encore à tronquer la partie de temps dans votre requête SQL, vous pouvez donc utiliser quelque chose comme:

SELECT * FROM table WHERE FLOOR(CAST(table.date AS float)) = FLOOR(CAST(@input AS float)) 

Vous n'avez pas à reconvertir en datetime, mais pouvez les comparer les flotteurs.

+1

Le débordement de pile est donc plus rapide! :-) –