One of the things I read recently showed that you shouldn’t use NUMBER fields to store dates–you should be using the DATE data type.  (As Tom Kyte has recommended, you should pick the data type based on what it is you’re trying to store).

An example is as follows (this was run on Oracle

Notice that Oracle was able to correctly identify the number of rows that would be returned when using the DATE data type (366), but was much further off when using the NUMBER data type (it estimated 444 rows would be returned).  Reason being that Oracle knows and understands a date data type, but if you hide the fact that what you’re storing is a date by putting it into a number data type, then Oracle doesn’t necessarily know it’s a date.  As a result, when Oracle collects statistics on those columns, it assumes a somewhat uniform distribution between the values. This doesn’t have much effect on a small table like this, but on a larger table, the effects can be devastating.  A mismatch in the number of returned records can change the plan for a query to a less-efficient plan.  (Basically, the more the database knows about your data, the more likely it is to choose a good plan for a query, hence adding things like constraints, dimensions, statistics, etc really do help).