我有一个开始和停止时间的数据库,以前都有相当新的数据(从 1960 年代到现在),我已经能够将其存储为长整数。这与 unix 时间戳非常相似,只有毫秒精度,所以像 java.util.Date.getTime() 这样的函数将是当前时间的值。
到目前为止效果很好,但我们最近从 1860 年代获得了数据,当导致时间 < 1901 的值(给或取)时,以下代码不再有效:
to_timestamp('1-JAN-1970 00:00:00', 'dd-mon-yyyy hh24:mi:ss') + numtodsinterval(int_to_convert/(1000),'SECOND' );
尝试以毫秒为单位的值(例如 -2177452800000)会导致一些问题,例如返回时间戳为 2038 年的日期。有没有办法解决这个问题?我查看过的所有文档和时间戳都应该能够处理几年一直到 -4000(BC),所以我怀疑 numtodsinterval 存在问题。
任何想法建议将不胜感激。