2010-11-12 1 views
1

У меня есть таблица, которая содержит значение каждые 30 минут в месяц, например.Преобразование даты GMT в BST на лету в SQL Server 2000

20/03/2010 00:00 12 
20/03/2010 00:30 14 

и т.д.

Все эти данные хранятся в GMT

мне нужно сделать выбор в этой таблице для данных во времени BST/часы

, например

select * 
from tbl 
where dt between '01 April 2010' and '30 April 2010 23:30' 

, когда в BST в качестве диапазона дат, указанного выше, даты необходимо преобразовать

мне нужен способ приема переключающего часа и в конце марта и октября во внимание

Unfortunatly Я не могу обновить SQL сервера

Есть ли способ, что я могу сделать это в SQL для SQL Сервер 2000?

что-то вроде функции, которую я мог бы сделать?

select * 
from tbl 
where fnConvertToClockTime(dt) between '01 April 2010' and '30 April 2010 23:30' 

Когда в GMT функция вернет точную дату из таблицы

Приветствия

Руперт

+0

Какой язык программирования вы используете? Разве не было бы безопаснее позволять базе данных делать все в UTC и делать всю математику datetime на языке программирования, которая правильно справляется с этим и отправляет SELECT в базу данных в UTC? – eumiro

+0

Я использую c sharp, но я действительно не хочу использовать этот язык, поскольку он становится намного более сложным таким образом, я хотел бы сделать много с этими данными, например, суммирование, цикл и т. Д. Изменение этого языка на использование языка приводят к большому переписыванию кода. – Rupert

ответ

0

У меня такая же проблема, и я изучает использование таблиц Календарь для таких convserions , Сохраняйте все даты в UTC, затем конвертируйте по мере необходимости, я, вероятно, собираюсь создать VIEWS для разных часовых поясов, чтобы избежать передачи параметров, но я думаю, что хранимая процедура также будет работать.

Я нашел некоторую полезную информацию здесь: how-do-i-convert-local-time-to-utc-gmt-time

и связанный с ним статью по календарным таблиц здесь: why-should-i-consider-using-an-auxiliary-calendar-table

+0

Это выглядит интересно, я мог бы создать временную таблицу, которая содержит все даты между диапазоном дат и смещением, а затем добавить это к основному дате времени? Одно из осложнений состоит в том, что эти данные полчаса – Rupert

+0

У меня был бы постоянный стол, даже с полуторачасовым временем это всего лишь 175200 строк за 10 лет (2 * 24 * 365 * 10). Но разница в часовых поясах - целые часы, таблица поиска не должна беспокоиться о минутах. (Возможно, я смущаю вещи с этим описанием, я все еще сам работаю над проблемой!) – Tony

+0

ОК, я посмотрю. Я думал больше о том, что, если я собираю данные за февраль 2000 года, работая над множествами для всех часов в feb в таблице temp и присоединяюсь к этому – Rupert

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