我想从MsSql和Oracle数据库中收集数据。因此,我使用预准备语句,因为我需要数据BETWEEN
a start和enddate。
鉴于数据库:
所以在MSSQL
我有这些专栏:
DATETIME
DATETIME
VARCHAR(100)
在Oracle
中,我有相同的列,但其他数据类型:
Date
Date
VARCHAR2(100)
现在我想使用以下准备好的SQL语句收集数据:
String taskSql = "" +
" SELECT startdate, enddate, name" +
" FROM TASKS" +
" WHERE startdate BETWEEN ? AND ?" +
" AND enddate BETWEEN ? AND ?";
这个数据库日期时间的东西让我感到困惑,每次我改变我的代码它看起来都有效,但是当在其他数据库上测试它就会中断。
我收集数据的Java代码:
Calendar cal = Calendar.getInstance();
cal.setTime(aEndDate);
cal.add(Calendar.HOUR, 23);
cal.add(Calendar.MINUTE, 59);
cal.add(Calendar.SECOND, 59);
Date endDate = cal.getTime();
java.sql.Timestamp sqlStartDate = new java.sql.Timestamp(startDate.getTime());
java.sql.Timestamp sqlEndDate = new java.sql.Timestamp(endDate.getTime());
System.out.println(sqlStartDate); // prints 2012-02-23 00:00:00.0
System.out.println(sqlEndDate); // prints 2012-02-23 23:59:59.0
PreparedStatement prepStatement = null;
ResultSet resultSet = null;
prepStatement = DB.getConnection().prepareStatement(taskSql);
prepStatement.setTimestamp(1, sqlStartDate);
prepStatement.setTimestamp(2, sqlEndDate);
prepStatement.setTimestamp(3, sqlStartDate);
prepStatement.setTimestamp(4, sqlEndDate);
resultSet = prepStatement.executeQuery();
不幸的是我不会使用JodaTime,下一个项目我会,因为我已经阅读了一些关于该库的好东西。
我的问题/问题是:
答案 0 :(得分:0)
感谢所有,我自己的错误,我正在监督!我为我的startdate添加了别名,并将此别名命名为'from'
。显然这不起作用!