需要sql查询才能获得最小和最大经验?

时间:2016-02-04 10:58:47

标签: sql

我有一个包含2列(exp_Years, exp_months)的表格。 在两个不同的列中保存数年和数月。

现在我需要一个SQL查询来获得最小和最大经验

If minExp=2years and maxExp=4years 

如何获得没有获得4.1和4.2 exp的记录?

示例数据: -

表:恢复(姓名,电子邮件,电话,exp_years,exp_months) 我需要exp_years> 2和exp_years< 5 ...的记录列表,但是如何在这里检查exp_month ..

如果我使用exp_years> 2和exp_years< 5条情况我们获得5年1个月的记录,5年2个月也有。

我只需要超过2年且少于或等于5年0个月......但不是5年1个月和更多......

实际上我需要hibernate HQL Query ....

提前致谢。

2 个答案:

答案 0 :(得分:1)

这是一种存储数据的奇怪方式。所以你应该存储两年零三个月,因为年= 2个月= 3个月。

但你也可以存储年= 1和月= 15或年= 0和月= 27,这将是相同的时间跨度。这就是说,最好只有一列,即months

然后要获得时间跨度超过2年且直到5年的记录,请您选择

where months between 25 and 60

如果您必须使用正在显示的桌面设计,那么您始终可以计算total months = years * 12 + months。那将是

where years * 12 + months between 25 and 60

答案 1 :(得分:0)

你可以通过在12个月之后的几个月到几年来增加,然后你可以使用ROUND来舍入到int值:

select ROUND(max(exp_Years+exp_months/12)), ROUND(min(exp_Years+exp_months/12))
from your_table