对于我的项目,我需要找到一个查询,查找即将到来的30天的数据,还需要1年。
以下是一个例子:
- 我在2014-01-31进行了培训并完成了我的培训,我需要在1年后(2015-01-31)做一次提醒。
- 但是,我想在我的数据库中选择此提醒,在提醒日期之前至少30天。
-SO,我的目标是提醒2015-01-31至2015-01-31。
这是我的代码的一个例子,因为我的英语不好(我是法国IT学生),我无法解释真的很好......:/
select nom, libelle_produit, nom_produit, date_debut_formation, date_fin_formation,
DATEADD (day , 365 , date_fin_formation) as 'Date limite'
from T_PRODUIT
join T_FORMATION on T_FORMATION.id_produit=T_PRODUIT.id_produit
join T_SUIT on T_SUIT.id_formation=T_FORMATION.id_formation
join T_EMPLOYES on T_EMPLOYES.id_employe = T_SUIT.id_employe
where DATEADD(year,1,year(date_fin_formation)) <= DATEADD(year,1,getdate())
and DATEADD(month,1,month(date_fin_formation)) <= DATEADD(month,1,getdate())
and DATEADD (day,1,day(date_fin_formation)) <= DATEADD(day,-30,GETDATE())
你能帮帮我吗?这不会给我一个好结果......
答案 0 :(得分:2)
如果我理解你的问题,你想要
如果
,今天所有提醒都会显示date_fin_formation
小于(今天的日期 - 1年)+ 30天date_fin_formation
大于今天的日期 - 1年即。通知应从(今天的日期 - 1年)+ 30天开始,直到(今天的日期 - 1年)
您可以使用像DATEADD(year,1,date_fin_formation) BETWEEN DATEADD(day,-30,getdate()) AND GETDATE()
这样的WHERE子句,而您的查询将是。
select nom, libelle_produit, nom_produit, date_debut_formation, date_fin_formation, DATEADD (day , 365 , date_fin_formation) as 'Date limite'
from T_PRODUIT
join T_FORMATION on T_FORMATION.id_produit=T_PRODUIT.id_produit
join T_SUIT on T_SUIT.id_formation=T_FORMATION.id_formation
join T_EMPLOYES on T_EMPLOYES.id_employe = T_SUIT.id_employe
WHERE DATEADD(year,1,date_fin_formation) BETWEEN DATEADD(day,-30,getdate()) AND GETDATE()