2012-05-16 4 views
0

J'ai un projet qui demande pour l'entrée de l'utilisateur (@StartDate et @EndDate)C# DateTimePicker temps

Une fois qu'ils choisissent la date où ils ont ensuite appuyer sur un bouton.
Une fois le bouton enfoncé, une procédure stockée est exécutée et les résultats sont renvoyés dans le visualiseur de rapports.

Le problème est si je sélectionne le même jour (par exemple 5/14/2012). (@startdate et @enddate ont tous les deux le 14/05/12) il n'affichera aucune information car il est réglé sur 00:00:00.

Je voudrais datetimepicker2 (@enddate) avoir l'horodatage 23:59:59.

Comment puis-je ajouter 23:59:59 comme heure pour datetimepicker2.value?

+0

BTW, vous devez ajouter une journée entière, juste dans ce cas rare quand vous avez un enregistrement avec une date comprise entre 23: 59: 59,0 à 23: 59: 59,999 – Patrick

Répondre

1

simple est d'ajouter du temps à datetimepicker2 valeur:

DateTime value = datetimepicker2.Value.AddSeconds(86399); //86400 is 24 hours 
1

Vous pouvez utiliser DateTime.AddDays (1) .AddSeconds (-1) en C# - mais je ne recommande pas le faire - il semble comme si vous deviez modifier votre sproc

Je suppose que vous faites un BETWEEN dans votre procédure SQL?

J'utilise habituellement

YourDate >= @StartDate AND YourDate < DATEADD(d, 1, @EndDate) 

En effet, lorsque vous travaillez avec horodatages, vous devez sélectionner l'ensemble de la journée (par exemple 5/14/2012 5/14/2012 23 00:00:00 Pour commencer : 59: 59, cette syntaxe fonctionne car elle inclut tout le temps entre le début de la date de début et la fin de la date de fin

Votre sproc fonctionne-t-il lorsque vous choisissez une date de fin différente de la date de début , c.-à-d. renvoie-t-il des données pour 15/05/2012 si vous choisissez 5/14/2012 -> 5/15/2012?

Sinon vous assistons peut-être cette question

1

Le minimun valeur

'08/21/2011 00:00:00'

Le maximun valeur

'08/21/2011 23:59:59 '

Utilisation:

var firstDate = dtpFrom.Value.Date; // 0:00:00 
    var secondDate = dtpTo.Value.Date.AddSeconds(86400 - 1); //23:59:59 - 86400 is 24 hours 
    var list = Services.GetListForFilter(firstDate, secondDate); 
Questions connexes