Jamie is absolutely right... we could introduce a contradiction if we redundantly store a point in time twice, one to represent the end of an interval, and then again to represent the start of the next interval.
So the view solves this problem. We store the element only once, and then simply use it twice as needed. Goodo!
Now, if only we could set things up so that we don't have to run that nasty self join every time we want to interrogate the view...
Hrm...
I know! How about we read from the view and write the results to a table! Sure, we'll have the redundant storage... but the values were generated from the view, and the view is the layer that has already ensured the consistency of the data.
Waaaait a minute... that's one of the fundamental premises behind a data warehouse. You build the schema in such a way as to optimize query speed, with consistency having been ensured by an upstream process.