在java中将UNIX_时间戳从SQL查询转换为日期时出现问题

在java中将UNIX_时间戳从SQL查询转换为日期时出现问题,java,mysql,date,Java,Mysql,Date,我有一个MySQL查询是这样做的: SELECT AVG(REALPOWER) AS REALPOWER, `OBJECTID`, UNIX_TIMESTAMP(LASTUPDATE)/(30*60) AS LASTUPDATE FROM POWER GROUP BY UNIX_TIMESTAMP(LASTUPDATE)/(30*60), OBJECTID 以30分钟为间隔对我的行进行分组。 然后在Java中,我想将LASTUPDATE转换为日期 问题是我无法理解如何使用LASTU

我有一个MySQL查询是这样做的:

SELECT AVG(REALPOWER) AS REALPOWER,
  `OBJECTID`,
  UNIX_TIMESTAMP(LASTUPDATE)/(30*60) AS LASTUPDATE
FROM POWER
GROUP BY UNIX_TIMESTAMP(LASTUPDATE)/(30*60),
  OBJECTID
以30分钟为间隔对我的行进行分组。 然后在Java中,我想将
LASTUPDATE
转换为日期

问题是我无法理解如何使用
LASTUPDATE
,它的值如下: 823945.7650000000、823945.770555550823945.776111110

即使将它们乘以1000得到毫,我也没有得到约会的真正价值

double last = Double.parseDouble(rs.getString("LASTUPDATE"));
Date date = new Date((long) last*1000L);

Java中的
Date
对象只是一个时间点。使用7和更早的API,如果您想要实际查看格式化日期,那么必须使用类似于
SimpleDateFormat
的东西。以下是一个例子:

double last = Double.parseDouble(rs.getString("LASTUPDATE"));
Date date = new Date((long) last*1000L);
SimpleDateFormat sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);
String dateFormatted = sdf.format(date);
System.out.println(dateFormatted);

Java中的
Date
对象只是一个时间点。使用7和更早的API,如果您想要实际查看格式化日期,那么必须使用类似于
SimpleDateFormat
的东西。以下是一个例子:

double last = Double.parseDouble(rs.getString("LASTUPDATE"));
Date date = new Date((long) last*1000L);
SimpleDateFormat sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);
String dateFormatted = sdf.format(date);
System.out.println(dateFormatted);
使用
floor()
将双精度值转换为整数类型。比如:

floor(UNIX_TIMESTAMP(LASTUPDATE)/(30*60)) AS LASTUPDATE
使用
floor()
将双精度值转换为整数类型。比如:

floor(UNIX_TIMESTAMP(LASTUPDATE)/(30*60)) AS LASTUPDATE

我知道,也许我的问题写得不好。问题在于,从
UNIX\u TIMESTAMP(LASTUPDATE)/(30*60)
中得到的值看起来不像是真实值timestamp@besmartUNIX时间戳只是从纪元(1970年1月1日)开始的秒数,如果您想要得到您心目中的时间戳,您必须用Java构建它。此外,您还可以考虑使用Java8DateAPI,这使事情变得更简单。我知道这一点,也许我的问题写得不好。问题在于,从
UNIX\u TIMESTAMP(LASTUPDATE)/(30*60)
中得到的值看起来不像是真实值timestamp@besmartUNIX时间戳只是从纪元(1970年1月1日)开始的秒数,如果您想要得到您心目中的时间戳,您必须用Java构建它。此外,您还可以考虑使用Java8DateAPI,这使事情变得更简单。