I need to store items with a calendar date (just the day, no time) in a sqlite database. What’s the best way to represent the date in the column? Julian days and unix seconds come to mind as reasonable alternatives. If I go with a unit other than days at what clock time should it be?
Update: I am aware of ISO8601 and actually used it to store the date as a string in YYYY-MM-DD format for the prototype. But for various arithmetic I have to convert it to some number internally, so I’d prefer to store a number and just convert to string for display. What units should this number be in, with what origin, and if the units is more precise than days what time of day should be used?
If you expect to be handing the date to an external tool or library, you should use whatever format it expects. Unix time seems to be the lingua franca of digital horography, so it’s a good default if external circumstances don’t make the choice for you.
ISO 8601 may be of interest.
Edit:
Ah, that makes sense. If your environment (.NET? Python? C++?) has time-handling tools, it would be best to use their native unit and epoch. There’s no reason to re-write all those date-manipulation functions; they’re trickier than they look. Otherwise, I’d use days in the local (Gregorian?) calendar since a reasonable epoch for your application. Be generous, you don’t want a reverse Y2K bug when you suddenly need to handle a date earlier than you ever expected.
The time of day is entirely a matter of taste. Midnight seems like the cleanest choice (all zeros in the hour, minute, second fields), but since it never reaches the user there’s no practical implications. It would be a good spot for an easter egg, in fact.