如何使用mysql查询找到更接近另一个日期的日期

时间:2015-09-10 03:26:41

标签: java mysql sql hibernate date

我想检索一条记录,该记录的日期字段的值更接近给定的日期。我该怎么办?

下面是表格,

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。

2 个答案:

答案 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