我在Sybase表中有一个datetime字段,需要在Perl中使用它来进行一些计算(差异以确保我获取至少相距'n'分钟的记录)。现在,如果我只是选择<datetime field
&gt;,Sybase将返回一个对我无用的人类可读字段。我正在寻找某种方式将其转换为基于纪元的时间,这将允许我在Perl中轻松操作它们。
我可能错了,但我没有在Sybase中找到现有的功能。我得到的最接近的是约会,这对我的目的很好。事实上,我现在正在使用它作为解决方法。 dateiff的问题是由于整数的限制,它的上限为68年。我知道我的代码可能不会在那个时候出现,但为什么要自己引入这样一个基于时间的限制呢?
有没有办法解决这个问题?
谢谢!
答案 0 :(得分:4)
如果您在客户端中执行此操作,则Time :: ParseDate模块应该能够为您完成工作。
答案 1 :(得分:2)
当我需要处理日期/时间计算时,DateTime模块对我很有帮助。
使用DBD :: Sybase syb_date_fmt()
方法控制格式,然后使用DateTime::Format::Strptime解析结果并生成DateTime对象。使用DateTime epoch
方法获取您的纪元时间,或者更好地使用适当的DateTime :: Duration对象进行数学运算。
答案 2 :(得分:1)
如果你不能让Sybase和Perl合作给你一个真正的DateTime对象或者类似的东西(比如Time :: Piece),那么我通常处理这类事情的方法是试图说服数据库给我ISO标准日期格式(YYYY-MM-DDTHH:MI:SS)并从那里转换。