Randolph West covers the internals of how date and time data types are stored in SQL Server:
DATEis the byte-reversed number of days since the year 0001-01-01, stored as three bytes. It goes up to 9999-12-31, which is stored as0xDAB937. You can check this value by reversing the bytes and sticking them into a hex calculator.37 B9 DAequals 3,652,058, which is the number of days since 0001-01-01.If you try to cast
0xDBB937as aDATEvalue (by incrementing the least significant bitDAby 1), it will throw a conversion error. There is obviously some overflow detection that protects against corruption in a date type.
Randolph looks at DATE, TIME, DATETIME(2), and DATETIME and explains how each is storedon a page.