2017-01-01 61 views
1

我有這樣做了MySQL查詢:問題從SQL查詢轉換UNIX_TIMESTAMP成日期在java中

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.7705555550,823945.7761111110

即使它們乘以1000得到米利斯讓我沒有真正的價值獲得一個約會。 ..

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

回答

0

A Date Java中的對象只是一個時間點。使用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); 
+0

我知道這個,也許我的問題寫得不好。問題是,從'UNIX_TIMESTAMP(LASTUPDATE)/(30 * 60)'出來的值看起來不像一個真實的時間戳 – besmart

+0

@besmart UNIX時間戳只是自紀元(1970年1月1日)以來的秒數,如果你想要記住那種時間戳,你將不得不用Java構造它。此外,您可以考慮使用Java 8日期API,使事情變得更容易。 –

0

使用floor()將double值轉換爲整數類型。例如:

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