2008-10-12 5 views
5

Я хочу сохранить значение C# DateTimeOffset в базе данных SQL Server 2005.Сохранение значения C# DateTimeOffset в базе данных SQL Server 2005

Sql 2008 имеет это как встроенный тип, но SQL Server 2005 этого не делает.

Структура DateTimeOffset имеет значение DateTime, которое я храню как DateTime, свойство Offset (типа TimeSpan). Поскольку это часовой пояс относительно UTC, по-видимому, он обычно используется в течение целого числа часов или половинчатых часов.

Предложения о том, как лучше всего хранить это в базе данных SQL Server 2005?

+0

Связанный вопрос - http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezone-best-practices – Oded 2010-07-23 20:20:05

ответ

7

Это не очень хорошая идея, чтобы предположить, что смещение несколько часов или половин часов - есть, конечно, четверть часа часовых поясов вокруг.

Использование миллисекунд для смещения, вероятно, является наиболее гибким, но я бы утвердил, что минуты намного легче читать. Если вы когда-нибудь будете смотреть на «сырые» данные в базе данных, то легче понять значение 60 = 1 час, чем 3600000. Я не могу представить, что вам действительно нужны доли минут в качестве смещения.

1

Сохраните даты и времени, как DateTime и смещение в миллисекундах (BIGINT)

4

Нормализовать все значения DateTimeOffsets для общего смещения, предпочтительно UTC. Затем просто сохраните DateTime, как обычно. При извлечении восстановите смещение, которое должно быть постоянным. Это не сохраняет смещение оригинала, но смещение неоднозначно относится к часовому поясу.

Если вам действительно нужно знать дату/время начала, вам нужно будет сохранить информацию о часовом поясе. Это связано с тем, что простое смещение не может однозначно представить происхождение времени. См. (Несколько запутанную) документацию MSDN о Choosing Between DateTime, DateTimeOffset, and TimeZoneInfo.

+0

Согласен - хранить даты как UTC и беспокоиться только о часовых поясах и смещениях DST на момент представление пользователю. – 2008-10-14 22:53:27

Смежные вопросы