`

HQL 处理日期比较 SQL Server

阅读更多

       Hibernate很大的一个特点就是屏蔽了数据库的差异,使用了hibernate就应该尽量HQL来操作数据库(除非不得不用数据库本身的一些特性),对于日期、时间类型的比较hibernate也提供很好的支持。

 

这里提供两种方式来处理HQL 日期、时间比较问题!

 

   一、常用

        

HQL:   * and acceptDate<=:end

    用一个时间类型来替换参数end:query.setDate("end",endDate);

    例:

java.sql.Date   beginDate=java.sql.Date.valueOf("2006-6-1");   
java.sql.Date   endDate=java.sql.Date.valueOf("2006-6-2");   
    
Stirng hql = "from table tb where tb.startdate <:endDate and tb.startdate >=:beginDate";  

Query query = session.createQuery(hql);
    
query.setDate("beginDate",beginDate);   
query.setDate("endDate",endDate);

 二、优化

  

String hql = "from TradeRecord as tr where tr.TradeTime>= :startTime " 
                   + "and tr.TradeTime <= :endTime and tr.CustomerId =:cid"; 

String[] params = { "startTime", "endTime", "cid" }; 

Object[] args = { startTime, endTime, new Long(cid) }; 

List liste = this.getHibernateTemplate().findByNamedParam(hql, params, args);

//startTime,endTime,cid是这个方法的参数

特别提醒:

 

     当遇到查询从A(起始时期)到B(结束日期)的纪录时,

     如果数据库中字段类型为timestamp,那么查询2008-10-10到2008-11-11的纪录时不会出现2008-10-10那一天的纪录,哪怕你的比较符号用的是>=和<=;因为数据库中的2008-10-10的纪录是这样的格式

   2008-11-11 15:35:48:253,而query.setDate设置一个时间参数进去,他是用这个时间比较的
   2008-11-44 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时间段的数据 
分享到:
评论
3 楼 nanjiwubing123 2012-04-28  
不错  不错 
2 楼 accphc 2009-05-19  
Stirng hql = "from table tb where tb.startdate <2009-6-1 and tb.startdate >=2008-6-1";
1 楼 accphc 2009-05-19  
Stirng hql = "from table tb where tb.startdate <2008-6-1 and tb.startdate >=2009-6-1";

相关推荐

    sql server查询时间技巧分享

    如果你正在使用微软自带的SQL Server Management Studio (SSMS) 进行查询,可以直接使用日期字符串与数据库中的日期字段比较,无需额外的转换函数。例如: ```sql SELECT * FROM info WHERE dataTime &gt; '2012-11-...

    hive技术分享文档

    客户端用于提交查询,元数据存储(通常使用MySQL或Derby)保存表和分区的信息,Hive Server处理客户端请求并解析HQL,执行引擎负责运行实际的MapReduce任务。 三、HQL与SQL Hive查询语言(HQL)与SQL非常相似,但有...

    Hive大数据仓库-笔记整理 (一)2020年最新版.pdf

    Hive Server负责接收和执行客户端的查询请求,Hcatalog用于共享元数据,Hive Metastore存储表和分区的元信息,而HQL是Hive的查询语言,类似于SQL。 2. **Hive数据模型**:Hive支持两种基本的数据模型——表和分区。...

    大数据工具资料收集之hive.docx

    Hive是一个针对大规模数据集进行分析处理的工具,它构建在Apache Hadoop之上,提供了类SQL的查询语言——HQL(Hive Query Language),使得用户无需深入理解MapReduce的编程模型即可进行数据查询与分析。Hive实质上...

    北大青鸟5.0二期2009年1月份机试试卷java

    - 使用Java语言,开发环境为Eclipse或MyEclipse,JDK版本为1.6,数据库为SQL Server 2005。 - 开发一个商品订单管理系统,其中涉及订单查询和处理功能。 - 订单信息应能按下单日期降序排列,点击"处理"按钮能改变...

    SSH.rar_ssh_联合开发

    压缩包中的"person_log.ldf"和"person.mdf"文件是Microsoft SQL Server数据库的文件。".ldf"文件记录了数据库的日志信息,包括事务、更新等操作;而".mdf"文件是主数据文件,存储了数据库的实际数据。这些文件可能是...

    hibernate

    Hibernate 能够支持多种数据库系统,包括 MySQL、Oracle、SQL Server 等主流数据库。这种多数据库的支持能力意味着使用 Hibernate 开发的应用程序具有很高的可移植性。 ### Hibernate 的安装与配置 #### 安装步骤 ...

    SSH_AddPage登录删除修改功能

    Action会将查询参数传递给Service,Service根据条件构造HQL(Hibernate Query Language)或SQL查询,从数据库获取结果集,然后返回给视图展示。 6. **页面展示**:Struts2或Spring MVC负责渲染HTML页面,显示数据...

    项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223.rar

    它将Java对象与数据库表对应,通过HQL(Hibernate查询语言)简化了SQL操作,降低了对数据库的依赖,提高了开发效率。在项目申报系统中,Hibernate用于数据的增删改查,使得数据操作更加简便易行。 四、JSP技术 JSP...

    Struts2+Hibernate jsp 增删改查 分页

    开发者可以使用EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)标签库来简化页面的编写,如迭代新闻列表、处理表单提交等。 4. **数据库设计**:项目中使用了Oracle数据库,这是一种关系型数据库...

    OnlineExam

    本文将详细探讨一款名为"OnlineExam"的在线考试系统,该系统采用了JSP(JavaServer Pages)技术以及SSH(Struts+Spring+Hibernate)框架进行开发,旨在实现高效、灵活的考试管理和成绩查询功能。 首先,我们关注...

    hive-0.8.1-bin

    Hive是Apache软件基金会开发的一个数据仓库工具,它允许用户使用SQL-like的语言(称为HQL)来查询、管理和处理存储在分布式文件系统(如Hadoop HDFS)中的大规模数据集。`hive-0.8.1-bin`是Hive的一个早期版本,包含...

    NHibernate+Oracle NHibernate+MySql Demo

    查询数据可以使用HQL(Hibernate Query Language)或 Criteria API,这是对SQL的面向对象的封装。 这个Demo项目可能是为了帮助开发者快速上手NHibernate,了解如何在不同的数据库系统之间切换,以及如何处理基本的...

    java面试题综合

    70. SQLSERVER数据截取:使用TOP关键字或ROW_NUMBER()窗口函数。 71. 当前日期:在Java中用new Date()获取,或SimpleDateFormat格式化日期。 以上只是部分面试题的解答,实际面试中还会涉及更多深入的技术细节和...

    精心整理的ssh2 一些错误问题的记录(推荐)

    这通常是在解析HQL或SQL语句时出现的语法错误。检查语句中是否有错误的关键词或符号使用不当。 ### 错误十:You don't have permission to access /on this server. 这是服务器权限问题,表示当前用户没有足够的...

    Hibernate5的Jar包整合.rar

    在Hibernate项目中,JSTL可以用于显示从数据库检索的数据,比如通过fmt:formatDate标签处理日期格式。 5. **Servlet相关的包和配置文件**:在JavaWeb应用中,Servlet扮演着服务器端的处理角色,接收并响应客户端...

Global site tag (gtag.js) - Google Analytics