2009-11-04 6 views
2

Я пытаюсь вставить значение даты '2010-03-14 02:00:00 AM' (Дневное время начала сбережения времени на 2010 год) в поле времени datetime таблица в sql server 2005. Дата сохраняется как '2010-03-14 03:00:00 AM' Сервер установлен в США (часовой пояс EST).Поле даты Sql не получает точно точно

Может ли кто-нибудь сказать мне причину, почему дата сохраняется по-другому?

Благодаря Рупа

+1

Нет, я не могу, но это, вероятно, упростит вашу жизнь дальше по линии, если вы будете хранить время в UTC. –

ответ

2

Как часы подскакивает от 0200 до 0300 один из этих времен не существует.

Wikipedia говорит

Цифровой дисплей местного времени не читает 02:00 точно на смену, но вместо прыжков с 01: 59: 59.9 либо вперед к 03: 00: 00,0 или назад 01 : 00: 00,0.

На мой взгляд, вы должны сохранить все время в базе данных в GMT/UTC и использовать только местное время на дисплее в клиенте - таким образом, в базе данных все время будет монотонно возрастающей (то есть раз будет не возвращаться в конце летнего времени)

+0

Я вставляю записи в БД только в формате GMT. Какова моя фактическая проблема: у меня есть первая дата (2009-10-25 08:00:00) и последняя дата (2009-11-07 09:00:00) . Когда эти даты сохраняются в БД в GMT как firstdate (2009-10-25 12:00:00 PM) и lastdate (2009-11-07 02:00:00 PM). Разница во времени для firstdate и lastdate (в переднем конце) составляет один час, а разница после сохранения в db составляет 2 часа. Если я хочу делать какие-либо манипуляции в средстве db, это дает нечетные результаты из-за изменения разницы для интерфейса front и DB.Any, чтобы разобраться в этой проблеме? – ASD

+0

Я смущен. Если вы входите в «2010-03-14 02:00:00 AM» (дневное время сбережения времени на 2010 год), «это не GMT, так как GMT не имеет летнего времени. (Также, если вы используете британские времена, обратите внимание, что время изменения 0100 не 0200) Я бы установил базу данных на GMT, а не на EST. Если нет, вам придется преобразовать время ввода от GMT в EST – Mark

2

GMT! = UTC. GMT имеет дневную экономию, UTC - нет. Сохраните ваши даты как UTC, и вы хорошо пойдете.

+0

Это неверно. GMT в значительной степени является синонимом UTC. UTC стандартизирован на международном уровне, а GMT - нет. GMT не меняется летом для летнего времени; Великобритания переходит на BST (британское летнее время), которое составляет GMT + 1. – megaflop

1

один пункт: GMT по определению не меняется в течение года: в Великобритании существует либо по GMT, либо по BST (британское летнее время).

Что касается, я бы перепрофилировал настройки вашего часового пояса для вашего БД и вашего сервера.

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