根据日期自动生成电子邮件(ColdFusion)

我有这个大数据库表,其中包含12个医疗证书,到期日期,文件链接以及他们来自哪些公司。我需要在认证到期日的90,60,30和15天内通过电子邮件生成报告。 这是数据库的样子:
certID,
profileID,
cprAdultExp,
cprAdultcompany,
cprAdultImage,
cprAdultOnFile,
cprInfantChildExp,
cprInfantChildcompany,
cprInfantChildImage,
cprInfantChildOnFile,
cprFPRExp,
cprFPRcompany,
cprFPRImage,
cprFPROnFile,
aedExp,
aedcompany,
aedImage,
aedOnFile,
firstAidExp,
firstAidcompany,
firstAidImage,
firstAidOnFile,
emtExp,
emtcompany,
emtImage,
emtOnFile,
waterSafetyInstructionExp,
waterSafetyInstructioncompany,
waterSafetyInstructionImage,
waterSafetyInstructionOnFile,
bloodPathogensExp,
bloodPathogenscompany,
bloodPathogensImage,
bloodPathogensOnFile,
oxygenAdminExp,
oxygenAdmincompany,
oxygenAdminImage,
oxygenAdminOnFile,
lifegaurdingExp,
lifegaurdingcompany,
lifegaurdingImage,
lifegaurdingOnFile,
wildernessResponderExp,
wildernessResponderCompany,
wildernessResponderImage,
wildernessResponderOnFile, 
notes
如何编写某种循环来检查所有日期(任何EXP是日期)然后存储哪些日期到期,并将所有这些细节通过电子邮件发送给某个人?     
已邀请:
由于您必须通过CF(我推测)发送电子邮件,因此我采用的方式是每天运行一次计划任务,检查哪一行有15天,30天,60天和90天的到期日。因此,计划任务将运行一些查询,然后发送电子邮件。 第一件事是实际找到有问题的行(我的所有SQL都假定MS SQL Server - 其他RDBMS将具有类似的语法):
<cfquery name="qExpiring">
  select
  certID,  
  dateDiff(day, cprAdultExp, getDate()) as cprAdultExpDaysSince
  dateDiff(day, cprInfantChildExp, getDate()) as cprInfantChildExpDaysSince
  from yourTable
  where 
  dateDiff(day, cprAdultExp, getDate()) in (15, 30, 60, 90)
  or 
  dateDiff(day, cprInfantChildExp, getDate()) in (15, 30, 60, 90)
</cfquery>
这应该给你一个像这样的结果集:
certID|cprAdultExpDaysSince|cprInfantChildExpDaysSince|etc.
___________________________________________________________
xxxxxx|30                  |5                         |etc.
xxxxxx|16                  |60                        |etc.
xxxxxx|2                   |90                        |etc.
任何有15,30,60,90匹配的你都有兴趣进一步处理。您可以使用查询查询来执行此操作:
<cfquery name="qAdultExpRenewal" dbtype="query">
  select * from qExpiring
  where cprAdultExpDaysSince in (15, 30, 60, 90)
</cfquery>
然后,您可以循环访问这些记录,并根据
cprAdultExpDaysSince
的值发送相应的电子邮件。 你错过了一些相关的信息给你一个全面的答案,但我希望这会指出你正确的方向。     
如果您有权访问数据库,则应该创建一个或多个视图,这些视图或视图仅为您提供过期或添加字段的日期,直到每个证书和查询到期为止。或者,您可以编写单个查询来获取任何证书过期的所有信息(WHERE cprAdultExp [比较]日期或cprInfantExp [比较]日期....),然后循环记录以过滤或按证书过期分组。     
你可能想要某种愚蠢的巨大查询,看起来像
select "CPR Adult", cprAdultExp, cprAdultcompany, cprAdultImage, cprAdultOnFile from thebigtable where cprAdultExp [comparison] interestingdate
union
select "CPR Child", cprChild....
union ...
然后迭代您返回的行,使用第一列指示ceritification即将到期。     

要回复问题请先登录注册