16
votes

I know that to insert a datetime this format yyyy-mm-dd hh:mm:ss should be used.

However my dataset has a timestamp field that looks like yyyy-mm-dd hh:mm:ss +/-0X:00, where X can take many values and is different from my computer's local timezone.

What is the best way to insert a datetime field with such timezone information to SQLite?

1
I would always insert the time converted to Greenwich (UTS+0) and clients would convert it to local time when retrieve from the database. In this way you do not need to store timezone in the database. If you really need to store timezone of the client that measured the time, put it into another column.farfareast
The easy way will be to store time as varcahar/string and then covert time on queringEmmanuel N
@EmmanuelN - That's a terrible idea - it's going to make working with date/times more difficult; always store values in the best type possible. farfareast has the better idea; although, I'd probably say UTC, which doesn't have daylight savings (unsure about Greenwich).Clockwork-Muse

1 Answers

9
votes

SQLite's built-in date and time functions understand the timezone specification in these strings, but with different timezones, any other operations on these strings (even searches and comparisons) will not work correctly.

If you want to handle time zones, you have to either

  • convert all timestamps to one specific time zone (UTC), so that you can use them for sorting and searching; or
  • leave the time zone information in there, but do all searching, sorting and other computations not in SQL but in your application.