5

我在 Sybase 表中有一个日期时间字段,需要在 Perl 中使用它来进行一些计算(差异以确保我拾取至少相隔 'n' 分钟的记录)。现在,如果我只是简单地选择<datetime field>,Sybase 会返回一个对我没有用处的人类可读字段。我正在寻找某种方法将其转换为基于纪元的时间,这将允许我在 Perl 中轻松地操作它们。

我可能是错的,但我在 Sybase 中没有找到现有的函数。我得到的最接近的是 datediff,它很好地满足了我的目的。事实上,我现在正在使用它作为解决方法。datediff 的问题是由于整数的限制,它的上限为 68 年。我知道我的代码可能要到那个时候才会出现,但是为什么要自己引入这样一个基于时间的限制呢?

有没有办法解决这个问题?

谢谢!

4

3 回答 3

4

如果您可以在客户端执行此操作,则 Time::ParseDate 模块应该能够为您完成工作。

于 2009-02-10T02:28:23.190 回答
2

当我需要处理日期/时间计算时, DateTime模块为我提供了很好的帮助。

使用 DBD::Sybasesyb_date_fmt()方法控制格式,然后使用DateTime::Format::Strptime解析结果并生成 DateTime 对象。使用 DateTimeepoch方法获取您的纪元时间,或者使用适当的 DateTime::Duration 对象更好地进行数学计算。

于 2009-02-10T04:10:08.403 回答
1

如果你不能让 Sybase 和 Perl 合作给你一个真正的 DateTime 对象或类似的东西(比如 Time::Piece),那么我通常处理这些事情的方式是试图说服数据库给我 ISO 标准日期格式 (YYYY-MM-DDTHH:MI:SS) 并从那里转换。

于 2009-02-10T07:14:48.820 回答