Something to remember when working with Date data types in Access:
Access stores dates as referential instances in time, the reference point being some day in the 19th century, I think. It doesn't really matter when the reference point is, though; dates before the reference point are negative double floating-point numbers, and dates after the reference point are positive double floating-points. One day is one integer increment--so one day = 1.000000. Therefore, when you're trying to calculate dates in Access, you're basically working with floating-point (read: decimal) numbers. Using OBP's example, consider the following scenario:
- Let Access's Date reference point = January 1, 2000
- Let DateReceived = January 1, 2001
In this setup,
DateReceived would equal
365.24, the floating-point representation of the number of days in a year. So then,
DestructionDate would be = 365.24 + (7 * 365.24), or about 2922,
NOT January 1, 2008. However, it works out the same because 2922 is the number of days from the reference point that represents 8 years' time.
I hope that example wasn't too confusing. The point is, Access's Date data type is not designed to handle durations of time very well, because the starting Date is not the reference point. Durations of time must be calculated as the difference between two instances with respect to a static reference point. But all those calculations are floating-point number calculations.
chris.