在不同的数据库中,时间的比较也许不同,但是通过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);
对开始时间
startDate.setHours(0)startDate.setMinutes(0);
startDate.setSeconds(0);
这样就是查询 A-0:0:0 到 B-23:59:59时间段的数据
下面是一个时间比较的案例:
//当前时间
Calendar cal = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=Timestamp.valueOf(formatter.format(cal.getTime()));
String hsql = " from com.cw.x2.auth.naming.resac.entity.NameAuthority where period.end<=:end and id='"+id+"'";
Query query = getSession().createQuery(hsql);
query.setTimestamp("end", date);
List list = query.list();
数据库表中的 end 字段是 Timestamp类型.
其他:
//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);
//明天日期
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>");
分享到:
相关推荐
使用sql语句查询日期 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据 select * from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有...
Oracle sql查询当前月的所有日期
SQL日期查询 sql日期查询的小例子,根据日期查询的sql语句
提供了详细的SQL日期相关函数查询,方便查找
sql 日期处理常用方法sql 日期处理常用方法
SQL Server 查询两个日期之间的所有月份示例
sql时间段查询
在MS SQL Server 中,只有DATETIME型,日期和时间是合在一起的,比如2004-12-19 23:12:20。 有的时候,在SQL语句中,只要求取日期的话,的确比较麻烦,但也有以下的方法,归纳一下......
sqlserver sql 根据出生日期生成年龄 去
SQL中日期格式转换 在sql中,smalldatetime及datetime型的数据显示不是那么让人满意,因此我找了些格式化的方法列出来
sqlserver中对时间日期的操作 学习必不可少的。
sqlserver中日期型字段设默认值默认值
有在论坛上看到一帖,《请教查询出连续日期记录的方法》,截图如下: Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。 代码如下: –创建一个临时表,将会存储连续日期的记录 ...
SQL日期操作 SQL日期操作日期推算处理
除了前一章介绍的SQL基本功能之外,SQL还可以用来完成其他一些重要且复杂的操作。 对于全世界来说,不同的地点有不同的时间,不同地点的人可能操纵相同数据库中的数据。数据库中需要存储准确的数据,这些数据离不开...
sqlserver中得到当前日期sqlserver中得到当前日期
示例中列出了三种实现在SQL中将日期转换为中文大写的方法,两种通过函数实现,一种通过存储过程实现。
在SQL Server 2005中使用日期/时间值有时候会很模糊、会觉得很迷茫。因为日期/时间数据类 型同时存储日期和时间值,而这些值的操作并不总是一个简单的过程,或者看起来不简单的。
sql server日期格式转换方法大全
SQL Server各种日期计算方法SQL Server各种日期计算方法