內使用我是比較新的Postgres的和正在使用的版本9.4。我在Java中有一個簡單的函數,如果我讓postgres去做,它會更有效率。我的功能需要一個整數以及來自數據庫,並改造他們。這一個字符串數據是我的功能:注意它需要一個整數和字符串Postgres的我怎麼可以創建一個函數的查詢
private static String difference(Integer i,String created_on) {
String id = "";
if (i < 60) {
...
}
else if (i >= 60 && i < 1440) {
....
}
else if (i >= 1440 && i < 10080) {
....
}
else {
....
}
return id;
}
這是我的查詢現在Created_on是String和last_reply是整數
"SELECT created_on as created_on,
last_reply as last_reply;
一旦數據來自於數據庫中,我把它放在一個循環,並通過這樣改造它:
for(i=0;i<10;i++)
{
jo = new JSONObject();
jo.put("last_reply", difference(rs.getInt("last_reply",
rs.getString("created_on"))));
}
正如你所看到的單向數據傳輸ormation發生在這裏
差異(rs.getInt( 「last_reply」, rs.getString( 「created_on」)
我現在的問題是我怎麼能複製該功能,並將其保存在Postgres裏,讓我可以做一個這樣的查詢
**
**"SELECT difference(last_reply,created_on) as newvalue, created_on as created_on,
last_reply as last_reply;**
** 正如我知道,從性能角度看,最好是有數據庫做而不是循環使用Java的數據。任何建議將是巨大的......
更新
該功能用於社交應用程序,測量東西張貼在紀要方面的時間。如果是小於60分鐘,然後將返回類似「6分鐘前等等」,如果是60-1440之間,然後將返回「4個小時前等等。」 。我已經計算出了If-else語句中的計算結果,但沒有包含它,因此代碼看起來更具有代表性。
以下是完整的方法
private static String difference(Integer i,String created_on) {
String id = "";
if (i < 60) {
if(i<1)
id = "Now";
else
id = i + " min";
}
else if (i >= 60 && i < 1440) {
i=(i/60);
if(i==0)
{i=1;}
id = i + " hrs";
} else if (i >= 1440 && i < 10080) {
i=(i/1440);
id = i + " day(s)";
}
else {
// Posted longer than 7 days so Created_On will show date created
// Passed down to the id String
id = created_on;
}
return id;
}
什麼是你的'差()'方法的邏輯是什麼?你只是顯示了很多無意義的'if'子句,'String'參數在任何地方都沒有使用。 – Kayaman
它測量分鐘計的時間少於60是從60-1440返回小時加上數分鐘。我會更新它。 – user1949387
什麼是'字符串created_on'嗎?如果你沒有在任何地方使用它,爲什麼你將它作爲參數傳遞?你的問題中有很多文字,但信息很少。 – Kayaman