我想检索一条记录,该记录的日期字段的值更接近给定的日期。我该怎么办?
下面是表格,
id |employeeid|region |startdate |enddate |
1 1234 abc 2014-11-24 2015-01-17
2 1234 xyz 2015-01-18 9999-12-31
在这里,我应该检索其结尾更接近另一条记录的开始日期的记录,例如'2015-01-18',所以它应该检索第一条记录。我尝试了以下查询
1
SELECT l.region
FROM ABC.location l where l.EmployeeId=1234
ORDER BY ABS( DATEDIFF('2015-01-18',l.Enddate) );
2
SELECT l.region
FROM ABC.location l where l.EmployeeId=1234
ORDER BY ABS( DATEDIFF(l.Enddate,'2015-01-18') );
但是,他们都没有工作。请帮助我。
谢谢, Poorna。
答案 0 :(得分:0)
您可能想尝试一下:
Query query = session.createQuery("SELECT l.region, ABS( DATEDIFF('2015-01-18',l.Enddate) ) as resultDiff FROM ABC.location l where l.EmployeeId=1234 ORDER BY resultDiff");
query.setFirstResult(0);
query.setMaxResults(1);
List result = query.list();
答案 1 :(得分:0)
嗯,Unix时间戳表示为自1970年1月1日以来的秒数,因此如果从另一个中减去一个,则得到秒数的差异。然后,天数的差异就是除以一天中的秒数:
(date_modified - date_submitted)/(24 * 60 * 60) 或
(date_modified - date_submitted)/ 86400
获得最低限度。 提到这个问题可能会有所帮助:::: Selecting the minimum difference between two dates in Oracle when the dates are represented as UNIX timestamps