2015-01-29 1 views
0

У меня есть 5000 + коды аэропортов (с широтой, долготой) в таблице, а список часовых поясов доступен в мастер-таблице с этими часовыми поясами: http://support.microsoft.com/kb/973627.Как найти часовой пояс станции в SQL Server 2012?

Как я могу сопоставить часовой пояс с кодом аэропорта? Для такого же смещения мы можем иметь несколько часовых поясов. Пример: GMT-06: 00 имеет несколько названий часовых поясов.

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

+0

Вы вообще что-то пробовали? Возможно, Google? –

+0

Это не связано с SQL, оно связано с часовыми поясами, смещениями и базой данных IANA. Любой, кто работает в индустрии туризма, знает боль –

+0

Кто бы ни проголосовал за закрытие, пожалуйста, сначала поймите вопрос перед голосованием. OP, безусловно, не просит учебника по SQL –

ответ

1

Это не то, что SQL Server может сделать изначально, вам придется отображать lat/lon на часовую зону самостоятельно, см. http://timezonedb.com/ для набора данных с открытым исходным кодом, который может вам помочь.

1

ПРИМЕЧАНИЕ Недопустимый список Windows Timezones для Windows XP. Он несколько раз менялся в прошлом, последний раз всего несколько месяцев назад. В любом случае, имена часовых поясов Windows не используются в путешествиях или где-либо еще в этом отношении.

GMT-6 - это не часовой пояс, это смещение. Часовые пояса - это те, которые содержатся в базе данных IANA, например. Russia\Moscow. В зависимости от времени года смещение изменяется. Фактически, российские часовые пояса в течение последнего десятилетия менялись много раз, поэтому вам нужно знать полную дату для расчета смещения.

База данных IANA содержит все временные зоны и правила расчета их смещений в 19 веке.

Ваша справочная таблица вашего аэропорта должна содержать код аэропорта и часовой пояс, разрешая смещения в коде клиента. Хранение смещений нецелесообразно. Они не только меняются, но нет никаких фиксированных дат, чтобы отметить изменение с зимнего на летнее время.

Я понимаю, что это немного боль, когда вы хотите рассчитать продолжительности путешествия. Если количество вычислений не очень велико, вы можете делать все на стороне клиента. База данных IANA невелика и часто внедряется в библиотеки, что означает, что каждый расчет стоит несколько циклов процессора. Другой вариант - создать сборку SQLCLR для перевода на сервер. Однако даже большие туристические агентства (как и в Топ-10 в Европе) не нуждаются в этом.

В системах Linux IANA timezone database является частью ОС, и вы можете разрешать смещения с системными вызовами. В Windows вы можете использовать библиотеку, например NodaTime, для разрешения часовых поясов на смещения.

База данных IANA регулярно обновляется. Библиотеки, которые его внедряют, должны быть перекомпилированы с новыми данными, а это значит, что вам необходимо обновить то, что вы используете.

Все справочные данные аэропорта, например, от Flightstats или других поставщиков, всегда содержат часовой пояс.

Если вы беспокоитесь о часовых поясах в аэропорту, вам следует избегать использования datetime в SQL Server и использовать, по возможности, datetimeoffset. Вместо того, чтобы предполагать, что все даты поездок являются местными датами (таким образом, требуются поиски и конверсии в аэропорту), будьте ясными. В любом случае все авиакомпании публикуют свои расписания с действительными смещениями. Это может сделать расчеты продолжительности много проще.

Что касается соответствия аэропортов для часовых поясов

Этот процесс не может быть полностью автоматизирован, потому что все наборы данных (даже коммерческих предложений) имеют пропуски.Даже если вы купите коммерческую услугу, будут случаи, когда аэропорт отсутствует, и вам нужно отправить его по названию города и т. Д. Это может произойти, например, если аэропорт еще не открылся, но авиакомпании начали продавать рейсы из/к нему.

Согласование координат с часовыми поясами не очень полезно. Легче сопоставлять коды аэропорта. Существует несколько служб, которые предлагают веб-службы или конечные точки REST, которые вы можете позвонить, чтобы запросить информацию о аэропорту. Понятно, что услуги бесплатного/открытого источника менее надежны, чем коммерческие предложения.

В качестве отправной точки вы должны найти некоторые услуги, запросить их в аэропортах, которые у вас уже есть, и сохранить информацию, обновив ее каждый раз, когда появится новый аэропорт. Однако ожидайте потратить некоторое время на очистку данных.

Рассмотрите возможность подписки на коммерческое обслуживание - они приняли модель для использования, которая стоит очень мало, если у вас всего 5000 вызовов. Они также предоставляют большую информацию, такую ​​как координаты, местоположения, информацию об исполнении и т. Д.

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