BindingSource Filtrer par date
Je veux que les valeurs de filtre de base de données basé sur la date.
Date dans une base de données contient des valeurs comme ceci: 2008-12-28 18:00:00. Et ma classe a un DateTime variable en fonction de qui je veux filtre. Idéalement, il pourrait fonctionner comme ceci:
myBindingSource.Filter = "DATE(myDateField) = myDateTime.Date"
+ réglage myDateTime.Format de Date en tant que de besoin.
Mais il déclenche une EvaluateException: "L'expression contient pas défini appel de la fonction DATE()."
Bien que si je exécuter l'instruction SQL directement, je peux utiliser la fonction DATE() dans le filtre.
P. S.-je utiliser des bases de données MYSQL avec le Connector/Net 5.2
Comment puis-je résoudre ce problème?
Merci à Vous tous pour les suggestions.
OriginalL'auteur Janis Veinbergs | 2008-12-30
Vous devez vous connecter pour publier un commentaire.
La getSqlDate fonction n'est pas nécessaire. Vous pouvez utiliser des chaînes de caractères.Format() pour formater les dates:
OU
Vous pouvez filtrer la source de liaison comme ceci:
OriginalL'auteur Rosco
Merci Tom H.
Oui, je voulais éliminer la portion de datetime dans le filtre et de votre suggestion fonctionne parfaitement.
Je vais laisser la solution complète pour les autres:
où getSqlDate fonction est:
OriginalL'auteur Janis Veinbergs
Une correction de la réponse:
Accoring à msdn
,pour obtenir la bonne date
le mm dans
devraient être capitalisés
comme;
pour obtenir une date formatée.
OriginalL'auteur B4ndt
Est myDateField le nom du champ dans le jeu de données? Je pense que vous voulez une expression comme ceci:
OriginalL'auteur DCNYAM
Demandez-vous comment éliminer la portion de datetime dans le filtre? Je ne suis pas trop familier avec MySQL, mais si vous utilisez tout type de fonction qui renvoie la date de la partie d'un datetime, alors vous êtes susceptibles de tuer toute chance de l'utilisation d'un index sur cette colonne de la requête (existant ou futur indice).
Votre meilleur pari est de créer un filtre sur l'extrémité avant qui vérifie une gamme qui est seulement pour votre filtre de date. Par exemple:
Désolé pour ne pas avoir de code exact, mais je suis un SQL developer et mon manque de VB/C# compétences m'obligerait à prendre beaucoup plus de temps à venir avec les fonctions alors il faudrait probablement vous. 🙂
OriginalL'auteur Tom H
Pour la recherche entre deux dates dans DataGridView, vous pouvez utiliser ce code :
BindingSource1 : mon datagridview datasourc charge dans BindingSource1 .
F5 : nom de votre en-tête de colonne dans le datagridview .
maskedTextBox1 : pour obtenir le premier jour .
maskedTextBox2 : pour avoir une deuxième date .
Être réussie "Arn_7"
OriginalL'auteur user6717817
Pour la recherche entre deux dates dans DataGridView, vous pouvez utiliser ce code :
OriginalL'auteur user6717817