Запрос к базе данных в коде - PullRequest
1 голос
/ 18 января 2011

Я использую запрос sysdate в коде для получения последних обновленных строк за последние 3 часа (должен настраиваться).База данных работает в часовом поясе GMT, а приложение - в часовом поясе PST.Запрос выглядит следующим образом:

select * from <table> where updated_Date  < sysdate - numdtodsinterval(3,'hour')

Какова рекомендуемая / лучшая практика для запуска таких запросов из приложения, которое имеет разные часовые пояса из базы данных.

Ответы [ 2 ]

1 голос
/ 18 января 2011

Я бы сказал, что лучший метод для приложения, которое охватывает много часовых поясов, - это прекращение использования типа данных DATE и начало использования TIMESTAMP с типом данных TIMEZONE.

Я не говорю, что это легко, просто говорю, что это, вероятно, лучшая практика по нескольким причинам.

Главное, что это устраняет любую неопределенность. Если вы используете DATE, никто не может сказать, на основании чего было рассчитано это значение. Ты знаешь. Возможно, у вас есть комментарий к колонке (в идеале), но, возможно, не заметили. Если это TIMESTAMP с типом данных TIMEZONE, вы прибили конкретный момент времени независимо от моих локальных часов.

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

1 голос
/ 18 января 2011

Запустите его как при использовании jdbc.

Sysdate интерпретируется на сервере, так что у вас все должно быть в порядкеОн вернет обновления за последние 3 часа, независимо от часового пояса клиента.(Если вы сохранили updated_date также с помощью sysdate!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...