有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache嵌入式derby TIMESTAMPDIFF函数在节光后额外返回1小时

我的应用程序使用apache嵌入式derby。它正在读取一个timestamp列say arrival\u time,并从数据库当前时间计算时间间隔

select {fn TIMESTAMPDIFF(SQL_TSI_MINUTE,timestamp('1970-01-01 00:00:00'),CURRENT_TIMESTAMP)} - min(arrival_time) / 1000 as "TIME" from APP.myTable

此查询工作正常,但在日间灯光保存后,它不会返回正确的间隔。时间差总是额外增加1小时

为了进一步调试,我执行了以下查询-

select CURRENT_TIMESTAMP from APP.myTable;
select {fn TIMESTAMPDIFF(SQL_TSI_SECOND,timestamp('1970-01-01 00:00:00'),CURRENT_TIMESTAMP)} from APP.myTable;

上述查询的输出如下所示-

2017-01-09 07:45:55 //current timestamp

1483951554 // interval

根据我的理解,间隔应该等同于当前时间戳,但当我试图将间隔转换为历元时间戳时,结果如下-

GMT: Mon, 09 Jan 2017 08:45:54 GMT

使用的时区仅为GMT。请告诉我哪里出了问题

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    由于无法找出上述问题的根本原因,我改变了逻辑。在derby中创建了用户定义的函数来计算时间间隔。 用java语言编写了我的函数来计算差异,结果成功了

    class DerbyFunction{ public static long getInterval(long timestamp){ return System.currentTimeMillis() - timestamp; } }

    select APP.getInterval(arrival_time) as "TIME" from APP.myTable

    要在apache derby中创建用户定义的函数,请参阅以下位置- Creating Apache Derby User defined Functions