hibernate ,the comparion of date

在不同的数据库中,时间的比较也许不同,但是通过hibernate统一封装起来。
java.util.Date begin, end;
String sql = "from demo where dt >=:begin and dt<=:end";
Query query = session.createQuery(sql);query.setDate("begin", begin);
query.setDate("end", end);List result = query.list();


顺便在提一个问题,我们经常碰到查询从A(起始时期)到B(结束日期)的纪录如果数据库中字段类型为timestamp,
那么查询2005-11-23到2005-11-23的纪录时不会出现2005-11-23那一天的纪录,
哪怕你的比较符号用的是>=和<=;因为数据库中的2005-11-23的纪录是这样的格式2005-11-23 15:35:48:253,
而query.setDate设置一个时间参数进去,他是用这个时间比较的2005-11-23 00:00:00 000,
所以因该用query.setTimeStamp("end",endDate);
如果从view层取到的date不包含后面的time信息,最好
 endDate.setHours(23);                
endDate.setMinutes(59);                
endDate.setSeconds(59);
对开始时间startDate.setHours(0)startDate.setMinutes(0);startDate.setSeconds(0);
这样就是查询 A-0:0:0 到 B-23:59:59时间段的数据

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM"); 
out.println(d);
out.println("<br>");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
out.println(mDateTime1);
out.println("<br>");
out.println(d.getTime());
out.println("<br>");
//当前时间
   Calendar cal  = Calendar.getInstance();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String mDateTime=formatter.format(cal.getTime());
   out.println(mDateTime);
   out.println("<br>");

//1年前日期
   java.util.Date myDate=new java.util.Date(); 
   long myTime=(myDate.getTime()/1000)-60*60*24*365;
   myDate.setTime(myTime*1000);
   String mDate=formatter.format(myDate);
   out.println(mDate);
   out.println("<br>");

//明天日期
   myDate=new java.util.Date();
   myTime=(myDate.getTime()/1000)+60*60*24;
   myDate.setTime(myTime*1000);
   mDate=formatter.format(myDate);
   out.println(mDate);
   out.println("<br>");

//两个时间之间的天数
   SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
   java.util.Date date= myFormatter.parse("2003-05-1");
   java.util.Date mydate= myFormatter.parse("1899-12-30");
   long  day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
   out.println(day);
   out.println("<br>");

//加半小时
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
   java.util.Date date1 = format.parse("2002-02-28 23:16:00");
   long Time=(date1.getTime()/1000)+60*30;
   date1.setTime(Time*1000);
   String mydate1=formatter.format(date1);
   out.println(mydate1);
   out.println("<br>");

//年月周求日期
   SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
   java.util.Date date2= formatter2.parse("2003-05 5 星期五");
   SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
   String mydate2=formatter3.format(date2);
   out.println(mydate2);
   out.println("<br>");

//求是星期几
   mydate= myFormatter.parse("2001-1-1");
   SimpleDateFormat formatter4 = new SimpleDateFormat("E");
   String mydate3=formatter4.format(mydate);
   out.println(mydate3);
   out.println("<br>");

你可能感兴趣的:(java,sql,Hibernate,F#)