• As a slight aside, I have to do this sort of a lot at the moment, and it's common to have tables with start_date_time and end_date_time columns. You'll often want to select all the records that were extant at a point in time. In other words if you wanted to retrieve all the events that had started but not finished on 1 Jan 2010 you might go (untested freehand follows):

    select blah

    from events ev

    where ev.start_date_time <= '20100101'

    and (ev.end_date_time > '20100101' or ev.end_date_time is null)

    similarly to find all events that overlapped with a period of time, you might go:

    select blah

    from events ev

    where ev.start_date_time <= '20100701'

    and (ev.end_date_time > '20100101' or ev.end_date_time is null)

    If it was your job to design these tables, would you be tempted to have an end_date_time column that could not be null, and instead substitute a ridiculous future date for all events that have not yet ended (like 22000101)? Are there indexing or other performance advantages to making your end_date_time column not null?

    ...One of the symptoms of an approaching nervous breakdown is the belief that ones work is terribly important.... Bertrand Russell