2012-03-14 5 views
0

J'ai quelques commandes utilisateur que j'ai faites dans wpf qui sont pilotées par deux datpickers. Un sélecteur contrôle le début de la plage de dates et l'autre contrôle la fin de la plage de dates.sql passant une date à un datetime

J'ai eu des problèmes avec la propriété datepicker.selecteddate qui me donnait l'heure avec la date et mes résultats sql n'étaient pas tous là parce que la valeur passée filtrait beaucoup de mes résultats. J'ai fini par trouver que si je formatais cette heure à minuit, alors mes résultats étaient tous là, mais chaque fois que je sélectionnais une nouvelle sélection dans le Dateur, cela réinitialisait l'heure formatée. Après quelques tests, j'ai trouvé que je pouvais juste passer la valeur de la propriété text de datepicker comme paramètre. La valeur de cette propriété est un type de chaîne et est définie sur la valeur de date de la date sélectionnée en cours (ex: 3/14/2012 5:00:32 AM est la date sélectionnée, alors '3/14/2012' est la valeur du texte). Jusqu'ici, étonnamment, cela semble retourner tous mes résultats que je voulais. Je me demandais pourquoi cela fonctionnait réellement (est ce que le format littéral 'mdy' est supporté et le format par défaut?), Et s'il y a des inconvénients négatifs à faire ce que je fais? Je sais beaucoup de fois juste parce que quelque chose fonctionne ne signifie pas que vous devriez l'utiliser dans la production. Je partage les tables avec d'autres ou je voudrais simplement convertir les champs datetime et les paramètres à ce jour et être fait.

J'espère que ma question est logique. Parfois, ils ne le font pas. S'il y a des questions, laissez des commentaires et je vous répondrai.

+1

Quel RDBMS? Si SQL Server quel est le type de données réel du paramètre? –

+0

Vous ne nous avez pas dit quel logiciel vous utilisez, y compris le SGBDR. – Marc

+0

Martin Smith: Passage d'une représentation sous forme de chaîne d'une date dans un paramètre datetime d'un sproc. Le sproc appelle les champs du format datetime en dehors des autres tables. – TWood

Répondre

0

En ce qui concerne les inconvénients négatifs, je ne vois rien - c'est ainsi que nous le traitons dans de nombreuses applications/bases de données. Cependant, la façon dont je le gère généralement est que si l'enregistrement ajouté n'a pas besoin de l'heure (BusinessDate, LoadDate), alors j'ajoute l'enregistrement avec seulement la date et pas de temps - donc la valeur est toujours au format 3/14/2012 12:00:00 AM Je pense que l'interrogation est beaucoup plus facile puisque vous n'avez pas à gérer le temps

Puis dans mon interface utilisateur (winforms) lorsque j'effectue une recherche sur la date avec un datetimepicker j'utilise le datetimepicker.Value.Date qui donne la date dans un format similaire (3/14/2012 12:00:00 AM). Si vous avez un champ dans une table qui nécessite une date/heure, utilisez-le et vous pouvez rechercher la date en formatant la date dans la table ou en utilisant date > yourdate AND date <= yourdate qui inclurait la date que vous recherchez.

+0

ce que votre dicton a du sens. En fait, j'avais des vues où j'avais une valeur de temps formatée comme un varchar qui était utilisé pour les affichages, puis un "entrytime" qui n'était pas modifié et utilisé pour faciliter les requêtes. Je suppose que je peux revenir en arrière et jeter un champ de date là aussi. Il semble que j'ai trouvé la propriété datepicker à laquelle vous faisiez référence également. En wpf sa syntaxe winforms est légèrement différente de celle de DatePicker.SelectedDate.Value.Date – TWood

+0

content que vous ayez trouvé la propriété, c'est bien qu'elle donne automatiquement la valeur de la date sans avoir besoin de mise en forme. – Taryn

+0

Je suis aussi. Le code avait l'impression d'être kludgy et cela corrige ça et m'apprend quelque chose aussi. Merci d'avoir pris le temps de répondre à ma question et de ne pas me contenter d'obtenir des points de rep. Avoir un bon. – TWood

Questions connexes