Как я могу манипулировать строкой даты и времени Sybase в Perl? - PullRequest
5 голосов
/ 10 февраля 2009

У меня есть поле datetime в таблице Sybase, и мне нужно использовать его в Perl для выполнения некоторых вычислений (различия, чтобы убедиться, что я выбираю записи, которые находятся на расстоянии не менее n минут). Теперь, если я просто сделаю выбор <datetime field>, Sybase вернет удобочитаемое поле, которое мне не нужно. Я искал способ превратить это в, скажем, эпохальное время, которое позволит мне легко манипулировать ими в Perl.

Я могу ошибаться, но я не нашел существующей функции для этого в Sybase. Самый близкий, который я получил, был датирован, который служит моей цели отлично. На самом деле, я использую это как обходной путь на данный момент. Проблема с датированным значением связана с ограничением на целое число, оно ограничено 68 годами. Я знаю, что мой код, вероятно, не будет до того времени, но зачем вводить такой основанный на времени лимит самостоятельно?

Есть ли способ обойти это?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 10 февраля 2009

Если вы согласны с этим на клиенте, модуль Time :: ParseDate должен выполнить эту работу за вас.

2 голосов
/ 10 февраля 2009

Модули DateTime хорошо мне помогли, когда мне нужно обработать дату / время.

Используйте метод DBD :: Sybase syb_date_fmt() для управления форматом, затем используйте DateTime :: Format :: Strptime для анализа ваших результатов и создания объектов DateTime. Используйте метод DateTime epoch, чтобы узнать время своей эпохи или, что еще лучше, сделайте математику, используя соответствующие объекты DateTime :: Duration.

1 голос
/ 10 февраля 2009

Если вы не можете заставить Sybase и Perl сотрудничать, чтобы дать вам подлинный объект DateTime или что-то подобное (например, Time :: Piece), тогда я обычно обращаюсь с такими вещами, чтобы убедить базу данных дать мне Стандартный формат даты ISO (ГГГГ-ММ-ДДЧЧ: МИ: СС) и конвертирование оттуда.

...