util的Date转sql的Date
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//转换格式 将符合日期格式的字符串转换成java的Date类型
java.util.Date attendanceDate = null;//声明一个Java的Date变量
java.sql.Date sqlDate = null;//声明一个数据库的Date变量
attendanceDate=simpleDateFormat.parse(request.getParameter("leaveDateQuery"));//用声明的Java的Date变量来接收经字符串转换来的日期
sqlDate = new java.sql.Date (attendanceDate.getTime());//Java的Date对象转为SQL对象
sql的Date转util的Date
java.sql.Date sqlDate1 = new java.sql.Date(new java.util.Date().getTime());
System.out.println(sqlDate1);
java.util.Date utilDate1 = new java.util.Date(sqlDate1.getTime());
注意:如果查询在某一时间段内的数据,数据库中一定要是Date类型,如果是DateTime类型在MySql数据库中能查出来,但是在Java中的查询是查不出来的。
比如:下面代码中画下划线的日期如果是DateTime类型在数据库中查询可以。
SELECT
note.fillInTime, note.noteTypeId,note.startDate,note.endDate, note.isVerify,
note.startTime,note.endTime,
a.employeeName as employeeName, a.cardNumber,
s.employeeName as operatorName,
attendancetype.typeName
FROM note
LEFT OUTER JOIN employees as a
on note.employeeId=a.employeeId
LEFT OUTER JOIN employees as s
on note.operatorId=s.employeeId
LEFT OUTER JOIN attendancetype
on note.noteTypeId=attendancetype.typeId
where 0=0
and ( '2019-08-03' >= note.startDate and '2019-08-03' <= note.endDate )
LIMIT 0,4
在下面这样查如果不是Date类型就查不出来
public ArrayList<Note> queryByKeyWords(Note note, PageUtil pageUtil) {
// TODO Auto-generated method stub
StringBuilder sbr = new StringBuilder();
sbr.append(" SELECT ");
sbr.append(" note.fillInTime, note.noteTypeId,note.startDate,note.endDate, note.isVerify, ");
sbr.append(" note.startTime,note.endTime, ");
sbr.append(" a.employeeName as employeeName, a.cardNumber, ");
sbr.append(" s.employeeName as operatorName, ");
sbr.append(" attendancetype.typeName ");
sbr.append(" FROM note ");
sbr.append(" LEFT OUTER JOIN employees as a ");
sbr.append(" on note.employeeId=a.employeeId ");
sbr.append(" LEFT OUTER JOIN employees as s ");
sbr.append(" on note.operatorId=s.employeeId ");
sbr.append(" LEFT OUTER JOIN attendancetype ");
sbr.append(" on note.noteTypeId=attendancetype.typeId ");
sbr.append(" where 0=0 ");
ArrayList<Object> params = new ArrayList<Object>();
if(note.getIsVerify()!=null && !note.getIsVerify().equals("")) {
sbr.append(" and note.isVerify = ? ");
params.add(note.getIsVerify());
}
if( note.getNoteTypeId() != 0 )
{
sbr.append(" and note.NoteTypeID = ? ");
params.add( note.getNoteTypeId());
}
if( note.getEmployeeName() != null && "".equals(note.getEmployeeName()) == false )
{
sbr.append(" and a.employeeName like ? ");
params.add( "%"+note.getEmployeeName()+"%");
}
if( note.getOperatorName() != null && "".equals(note.getOperatorName()) == false )
{
sbr.append(" and s.employeeName like ? ");
params.add( "%"+note.getOperatorName()+"%" );
}
if( note.getAttendanceDate() != null )
{
sbr.append(" and ( ? >= note.startDate and ? <= note.endDate ) ");
params.add(note.getAttendanceDate());
params.add(note.getAttendanceDate());
}
sbr.append(" limit " + pageUtil.getStartIndex() + " , " + pageUtil.getPageSize());
// ArrayList list = (ArrayList<Note>) dao.query(sbr.toString(), Note.class, params.toArray());
// String str = JSON.toJSONString(list);
// System.out.println(str);
//System.out.println(sbr.toString());
// System.out.println(params.toString());
ArrayList<Note> list=(ArrayList<Note>) dao.query(sbr.toString(), Note.class, params.toArray());
// System.out.println(list+"111111111111");
return list;
}
如果转日期是如下所写,则不用区分数据库中是Date还是DateTime,都可以查出来
Date sqlDate =null;
String time = request.getParameter("leaveDateQuery");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//yyyy-mm-dd, 会出现时间不对, 因为小写的mm是代表: 秒
Date utilDate;
try {
utilDate = sdf.parse(time);
sqlDate = new java.sql.Date(utilDate.getTime());//
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}