Apparently DateTime.Ticks can represent time down to the nanosecond level, from the year 0001. According to the poster above, it requires 8 bytes of space.
However, to get a minimal representation for all the micro seconds from the year 0000 to the year 9999, you can calculate it as follows:
9999 years * 365 days * 24 hrs * 60 min * 60 secs * 1000000 microseconds = 525547400000
ln(above number) / ln(2) = 52.22274 .. -- 53 bits
53 bits = 6.5 bytes.
So, you can save a byte by using a non-standard representation (basically you save by not having to represent nanoseconds).
Writing the conversion routines is simple enough. Just convert each date, time, millisecond to the appropriate millisecond between beginning of year 0000 and year 9999. To get the date time back again, just do the reverse calculation. It's simple enough you should be able to figure it out.
However, I highly doubt saving 1 byte is worth the work, potential bugs, non-standardization, maintenance, documentation, etc. etc.