Я думаю, что вы должны сохранять дату / время в базе данных в постоянном часовом поясе, это может быть либо GMT (потому что преобразовать его в другие часовые пояса довольно просто), либо текущий часовой пояс сервера, если это не GMT.
Единственная причина, по которой более поздний вариант имеет смысл, заключается в том, что вы используете функцию CURDATE для вставки / фильтрации записей из базы данных, в противном случае GMT является лучшим вариантом.
Вы можете попробовать использовать DATEDIFF с DATEADD, но из-за DST это не всегда даст точное время (в некоторых случаях отключается на 1 час).
В SQL Server 2005 существует известное ограничение на преобразование часовых поясов, для получения дополнительной информации обратитесь к следующей ссылке:
http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=308563