Alternatively, you can also set the xlim values to datenums corresponding to the beginning of a month and/or year and as suggested previously use the vectorizing capability to increment by 6 months or some other suitable interval so that the ticks line up with specific "neat" calendar intervals.
Again, the key is to decide what you do want and then work to achieve that result. The tools/methods to manipulate the dates and display them are all demonstrated here.
This again presumes that you plot the data against the actual date values. If it is mandatory to use the sequential serial number instead so that the multiple data values show up as separate locations on the x-axis, then you've got to generate a different problem as you'll be asking to plot the location at something different than the actual date. There are some ways I can think of to handle that, but they would take additional fiddling to make something useful of the x-axis. My first inclination would be to separate the repeated values into alternate datasets and plot them as other data points color-coded perhaps as the second, third, etc., repeat for the day but still use the actual date on the axis.
Otherwise, you'll be forced to generate some labels at points from the actual date and set them appropriately but the indication to the user will always be somewhat misleading; the more so the more repeats there are so the accumulated distance of zero actual time versus displayed axis time becomes larger.