February 2007 isn't a date. Dates are stored as 8 byte floating point
numbers, where the integer portion represents the date as the number of days
relative to 30 Dec, 1899, and thedecimalportion represents the time as a
fraction of a day.
You could, I suppose, store your pseudodates as text, but querying them
would be problematic, to say the least.
Access/Jet's DATETIME data type (broadly equivalent to standard SQL's
TIMESTAMP) is used to model an instant in time and is accurate in to
the nearest second. With due respect, who cares how they are stored:
fixed decimal, scaled integer, ticks, text, etc? Not I. With DATETIME
data, if you have effective database constraints and use only the
built-in temporal functions (DATEDIFF, DATEADD, DATEPART, etc) then
you won't go wrong.
February 2007 is a period. Periods are modelled in SQL using a start-
and end date pair of instants in the same row. You get to choose the
representation; I prefer closed-closed representation where the start
date and end date values are the first and last time granules
respectively in the period e.g. February 2007 would be
[#2007-02-01 00:00:00#, #2007-02-28 23:59:59#]
The main advantage of the closed-closed representation is that BETWEEN
constructs can be used, making SQL code 'human friendly' which aids
maintenance e.g.
WHERE test_date BETWEEN start_date AND end_date
Jamie.
--