The reason is that they are not actually distinct, since the Date() function you are using represents the date but keeps the subjacent numeric value for each record, so the dates contain times and thus are different. Rather, making a new field deleting the time part of the timestamp will do:
CaptureDateTime AS OriginalDateTimeField,
Date(Floor(CaptureDateTime), 'DD-MM-YYYY') AS CaptureDateTime
You keep the original field should you need to use it later, but creating a listbox with CaptureDateTime will only show the date parts, so when you select "15-05-2011" all values in the original field with this date will be selected.