It will sort correctly, however, you will either get an error or an incorrect
date, depending on the value. For example:
Using the value you showed as an example:
x = "1583-07-00"
?dateserial(left(x,4),mid(x,6,2),right(x,2))
6/30/1583
And here, it gets even further out:
x = "1583-00-00"
?dateserial(left(x,4),mid(x,6,2),right(x,2))
11/30/1582
Now were are in a different century
x = "0000-00-00"
?dateserial(left(x,4),mid(x,6,2),right(x,2))
11/30/1999
It gets even more strange
x = "0000-01-01"
?dateserial(left(x,4),mid(x,6,2),right(x,2))
1/1/2000
So, as you can see, the values would be very difficult to deal with.
It will translate a month off because the 0 date of a date becomes the last
day of the previous month. This is a technique used purposely when you want
to create a date range without having to worry about how many days are in the
month.