2015-02-23 83 views
1

我有一个HQL查询从数据库中获取数据给定的用户时间戳。查询工作正常,但不能获取我期望的确切数据。如何根据HQL中的时间戳范围从数据库中获取数据

例如:我通过了02/16/2015,02/23/2015,我的jsp页面中的值作为开始日期和结束日期。我将这些值传递给HQL.但我的代码给出了01/16/2015和02/23/2015.reduce 1 month.so我想知道我怎么能达到我期望的。下面是我的code.Thank你。

public static List<TestResult> getTestResulDataSet(String sDate,String eDate) { 
    final Map<String,List<TestResult> > dataSet = new HashedMap(); 

    DateFormat df = new SimpleDateFormat("mm/dd/yyyy"); 
    Date date1=null, date2=null; 
    String Rsdate=sDate; 
    String Redate=eDate;   
     try { 
      date1 = (Date) df.parse(Rsdate); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     try { 
      date2 = (Date) df.parse(Redate); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    final Date date3=date1; 
    final Date date4=date2; 

    Transactions.exec(new Procedure() { 
     @Override 
     public void execute() throws Throwable { 
      List<TestResult> rs = new ArrayList(); 

      rs = Transactions.getSession().createCriteria(TestResult.class).add(Restrictions.ge("timestamp",date3)).add(Restrictions.le("timestamp",date4)).list(); 

      dataSet.put("TestResult", rs); 

     } 
    }); 

回答

0

正确的日期格式为MM/dd/yyyy

正确:DateFormat df = new SimpleDateFormat("MM/dd/yyyy");

mm代表分钟,同时MM代表个月。 官方格式描述:

Letter Date or Time Component Presentation Examples 
G Era designator Text AD 
y Year Year 1996; 96 
Y Week year Year 2009; 09 
M Month in year Month July; Jul; 07 
w Week in year Number 27 
W Week in month Number 2 
D Day in year Number 189 
d Day in month Number 10 
F Day of week in month Number 2 
E Day name in week Text Tuesday; Tue 
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1 
a Am/pm marker Text PM 
H Hour in day (0-23) Number 0 
k Hour in day (1-24) Number 24 
K Hour in am/pm (0-11) Number 0 
h Hour in am/pm (1-12) Number 12 
m Minute in hour Number 30 
s Second in minute Number 55 
S Millisecond Number 978 
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 
Z Time zone RFC 822 time zone -0800 
X Time zone 
+0

谢谢您的回答,但仍然不work.the问题是我不能获取当前月份的数据。 – gihan 2015-02-23 09:47:19

+0

你确定日期没有解决吗?无论哪种方式,这是一个错误。假设我的日期为2015年2月11日,在2015年1月11日的小时00:02:00(2分钟)使用新的SimpleDateFormat(“mm/dd/yyyy”)结果,同时使用新的SimpleDateFormat(“ MM/dd/yyyy“)给出日期2015年2月11日小时00:00:00。有月份差异。 – Mythul 2015-02-23 10:19:33

+0

也许这个问题也可以帮助你:http://stackoverflow.com/questions/21265134/hql-to-query-records-between-two-dates – Mythul 2015-02-23 10:23:47

相关问题