I'm working on a project that involves allowing the user to create queries in a GUI some of those queries involve dates.
My question is, Have you previously built any date based query solutions, or know of any good date based query solutions on the internet that I could go and research?
It's a very complicated UX issue to try and solve for our users and I would very much love the input of the SO community.
After spending a little over a week on this issue I am finding it rather difficult to come up with a good concept on how a user can apply a logical query to a date.
Example use cases include:
Send a birthday email to customers 3 days before a users Birthday, we have the users DOB stored in our database.
Do an action to contacts that have not opened an email for the last 180 days from today.
http://www.uxfreelance.com/_temp/dotmailer/t4.html (prototype of solution # 2) http://www.uxfreelance.com/_temp/dotmailer/index.html (prototype of solution # 1)
After initial user testing I've found the following:
- Users understand 'TODAY' as an absolute date (i.e. 16/08/2013) opposed to relative date (i.e. execution date of the query).
- Users mistake BEFORE and AFTER
3 days before a birthday would translate as a QUERY as '[3] days [AFTER] query run day'
Here is a text version of a solution:
[ Date of Birth | v ] frequency: [ ] every year
- is [ On | v ] [ DD/MM/YY | v ]
- is [ Today | v ]
- is [ Before | v ] [ The Date | v ] [ DD/MM/YY | v ]
- is [ Before | v ] [ Today by | v ] [ X ] days
- is [ After | v ] [ The Date | v ] [ DD/MM/YY | v ]
- is [ After | v ] [ Today by | v ] [ X ] days
[ Date of Birth | v ] frequency: [ X ] every year
- [ Today | v ]
- [ Before (Past) Today by | v ] [ X ] days
- [ After (Future) Today by | v ] [ X ] days
Running the following queries would look something like this:
180 days if not opened email
[ Last Opened | v ] frequency: [ ] every year
- is [ Before | v ] [ Today by | v ] [ 180 ] days
3 days before contacts birthday every year.
[ Last Opened | v ] frequency: [ X ] every year
- [ After (Future) Today by | v ] [ 3 ] days