我有一个包含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 ....
提前致谢。
答案 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