1

我在数据库中保存了几个帐户。我想通过电子邮件发送已过期 15 天的 accountsdd。换句话说,如果提交的日期(日期格式:mm-dd-yyyy)比今天的日期早 15 天,则发送电子邮件。我该怎么做?非常感谢任何信息。谢谢你。

4

2 回答 2

2

你会想使用这个dateDiff功能

<cfif dateDiff('d',submittedDate,now()) GT 15>

如果您的日期确实存储为mm-dd-yyyy日期/时间对象而不是日期/时间对象,那么您将需要使用该createODBCDate函数

<cfif dateDiff('d',CreateODBCDate(submittedDate),now()) GT 15>

如果您希望通过查询提取所有帐户,这将起作用。这适用于 MSSQL

SELECT relevant, columns
FROM myTable
WHERE dateDiff(d,submittedDate,getDate()) > 15
于 2013-07-23T02:52:23.353 回答
0

如果没有更多细节(数据库类型、数据类型等),这只是一个有根据的猜测。但听起来您在问如何查找恰好在 15 天前提交的所有记录,无论时间如何。例如,如果现在的日期和时间是 2013 年 7 月 29 日上午 8:49,您想要检索在 2013 年 7 月 14 日(午夜 12 点到晚上 11:59:59 之间的任何时间)提交的所有记录。

具有简单范围比较的查询应该可以解决问题。注意:虽然 Matt 的建议dateDiff(或您的数据库版本)也可以,但以这种方式使用函数通常会阻止数据库利用索引。因此最好使用对索引更友好的表达式,例如:

<cfset fifteenDaysAgo = dateAdd("d", -15, now())>
<cfquery ...>
   SELECT  emailAddress
   FROM    yourTable
   WHERE   submittedDate >= <cfqueryparam value="#fifteenDaysAgo#" cfsqltype="cf_sql_date">
   AND     submittedDate < <cfqueryparam value="#dateAdd('d', 1, fifteenDaysAgo)#" cfsqltype="cf_sql_date">
</cfquery>

然后,只需使用查询结果发送您的电子邮件即可。

于 2013-07-29T16:24:59.257 回答