It sounds like the relevant points are:
- Your incoming data is a good fit for
DateTimeOffset
- You only care about the offset at that particular time, so you don't need a real time zone. (An offset isn't a time zone.)
- You do care about that original offset - you can't just normalize everything to UTC and ignore the offset entirely.
- You want to query on the local time.
It does sound like DateTimeOffset
is basically the most appropriate type in this case. You should make sure everyone on the team is clear about what it means though - the offset is the offset when the data was originally received. If you want to display that instant in time in a different time zone, you effectively need to go back to UTC, and find out what the offset would be in that display time zone. It's easy to get confused about this sort of thing :)
If you need to maintain the data in SqlServerCE with full fidelity, you'll probably want a DateTime field and then a separate field for the offset (e.g. in minutes, or as a TimeSpan if SqlServerCE supports that).