我试图通过我的查询从各种表中检索值,如下所示,
select f.* from
(select d.DateKey as DK from dbo.DimDate d where d.date between '01/01/2012' and '07/31/2014' ) m
inner join
(select a. SiteID,a.DateKey,a.Imp,a.OnTarget_Imp,a.Viewable_Imp,b.Plcmnt_Nm from dbo.SocMet_Niel_Fact a left join dbo.SocMet_NielPlcmnt_Dim b on a.PlcmntID = b.PlcmntID) f
on
f.DateKey = m.DK where f.SiteID = '25674897'
这个代码在我的SQL Server管理工作室中运行正常,但是当我通过我的java代码运行它时它不会以相同的方式运行并抛出算术溢出错误..
我处理此查询的servlet代码是
if(type.equals("paid_placement"))
{
try
{
System.out.println("I m in Paid Placement");
String site=request.getParameter("site_id");
System.out.println(site);
int sid=Integer.parseInt(site);
System.out.println(sid);
String start_date=request.getParameter("s_date");
String end_date=request.getParameter("e_date");
prepStmt = con.prepareStatement(dbquery.pdd_placement);
prepStmt.setString(2, start_date);
prepStmt.setString(3, end_date);
prepStmt.setInt(1, sid);
rs = prepStmt.executeQuery();
place_array = new JSONArray();
while(rs.next())
{
json=new JSONObject();
json.put("placement_name", rs.getString("Plcmnt_Nm"));
json.put("impressions", rs.getString("Imp"));
json.put("ontarimp",rs.getString("OnTarget_Imp"));
json.put("viewable_imp", (int)rs.getInt("Viewable_Imp"));
place_array.put(json);
}
System.out.println(place_array);
mainjson=new JSONObject();
mainjson.put("paid_placement", place_array);
System.out.println(place_array);
String responsetojsp=mainjson.toString();
System.out.println(responsetojsp);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(responsetojsp);
}
catch(NumberFormatException | SQLException | JSONException | IOException e)
{
logger.error("Error : " + e);
}
}
并且dbquery页面中的查询看起来像这样,
public static String pdd_placement = "select f.* from \n" +
" (select d.DateKey as DK from dbo.DimDate d where d.date between ? and ? ) m\n" +
" \n" +
"inner join \n" +
"(select a. SiteID,a.DateKey,a.Imp, a.OnTarget_Imp,a.Viewable_Imp,b.Plcmnt_Nm from dbo.SocMet_Niel_Fact a left join dbo.SocMet_NielPlcmnt_Dim b on a.PlcmntID = b.PlcmntID) f \n" +
" on \n" +
" f.DateKey = m.DK where f.SiteID = ?";
在这个问题中发表了一些评论之后,我已经更新了我的代码,我实际上将我的字符串日期值转换为sql.date值,如下所示
Date s_date;
s_date = (Date) formatter1.parse(start_date);
Date e_date;
e_date = (Date) formatter1.parse(end_date);
java.sql.Date sqlS_Date;
sqlS_Date = new java.sql.Date(s_date.getTime());
java.sql.Date sqlE_Date;
sqlE_Date = new java.sql.Date(e_date.getTime());
但仍然会抛出错误,
java.util.Date无法强制转换为java.sql.Date
有人可以帮助我吗?