如何在java中从PostgreSQL转换时间间隔

Met*_*lak 5 java postgresql intervals

我想选择PostgreSQLtime_interval类型的列。interval

并用Java代码转换为long类型

我的桌子是

  trigger
  id   time_interval  cdate 
  1     01:00:00      2018-12-11
  2     1 day         2018-12-11
  3     1 month       2018-12-11
  4     00:05:00      2018-12-11
Run Code Online (Sandbox Code Playgroud)

Java代码是

   List<Long> results= executeQuery("select * from trigger limit 10",(rs,rowNum)->{

        Long time_interval = rs.getTimestamp("time_interval").getTime();

        return time_interval ;

    });
Run Code Online (Sandbox Code Playgroud)

我的错误是

nested exception is
org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: {1}
Run Code Online (Sandbox Code Playgroud)

Lau*_*lbe 2

org.postgresql.util.PGInterval处理 PostgreSQL 的特殊类型interval

org.postgresql.util.PGInterval i =
    (org.postgresql.util.PGInterval) rs.getObject("time_interval");

// gives something like "1 years 0 mons 0 days 2 hours 0 mins 0.00 secs"
System.out.println(i);

// gives something like "2"
System.out.println(i.getHours());
Run Code Online (Sandbox Code Playgroud)

我不知道long你想从间隔计算什么值,但如果它是以毫秒为单位的长度,你可以像这样继续:

java.util.Calendar cal = new java.util.GregorianCalendar();
cal.setTimeInMillis(0);
i.add(cal);
System.out.println(cal.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)