I have a few user controls I made in wpf that are driven by two datepickers. One picker controls the begin of the date range and the other one controls the end of the date range.
I had issues with the datepicker.selecteddate property giving me the time along with the date and then my sql results were not all there because the passed in time value filtered out a lot of my results. I ended up finding that if I formatted that time to midnight then my results were all there, but every time I picked a new selection in the datepicker it would reset the formatted time.
After some testing I found that I can just pass the value of the datepicker text property as the parameter. This property’s value is a string type and is set to the date value of the current selected date (ex: 3/14/2012 5:00:32 AM is selected date then ‘3/14/2012’ is the text value).
So far, surprisingly, this seems to return all my results I wanted.
I was wondering about why this actually works (is it b/c the ‘mdy’ literal format is supported and the default?), and if there is any negative drawbacks to doing what i’m doing? I know a lot of times just because something works doesn’t mean you should use it in production. I share the tables with others or I would just convert the datetime fields and parameters to date and be done.
I hope my question makes sense. Sometimes they don’t. If there are questions leave comments and i’ll chime in.
As far as negative drawbacks, I cannot see any – this is how we handle it throughout many apps/DBs. However, the way I typically handle it is if the record being added doesn’t need the time (i.e. BusinessDate, LoadDate) then I add the record with the only the Date and no time – so the value is always in the format
3/14/2012 12:00:00 AMwhich I think makes querying significantly easier since you don’t have to deal with the timeThen in my UI (winforms) when performing a search on the date with a
datetimepickerI use thedatetimepicker.Value.Datewhich gives the date in a similar format (3/14/2012 12:00:00 AM).If you have a field in a table that needs a datetime, then use it and you can search the date by either formatting the date in the table or using
date > yourdate AND date <= yourdatewhich would include the date you are searching.