esp*_*fee 0 coldfusion dateadd
我希望在上一学年结束后每次增加学年.例如,我当前的代码如下所示:
WHERE schooldt BETWEEN '07/01/2016' AND '06/30/2017'
Run Code Online (Sandbox Code Playgroud)
因此,一旦学年结束,06/30/2017我想自动设置新的开始日期和新的结束日期.我在考虑在冷聚变中使用dateAdd().有没有其他方法可以做到这一点,最有效的是什么?
提前致谢.
我希望在上一学年结束后每次增加学年
然后实现逻辑,根据当前月份更改查询中使用的日期值.如果当前月份早于7月,那么您知道当前学年仍在进行中.因此,扣除一年来计算开始日期.否则,转到下一年.
<cfset today = now()>
<!--- If the current school year is still in progress --->
<cfif month(today) lt 7>
<cfset startDate = createDate( year(today) - 1, 7, 1)>
<cfset endDate = createDate( year(today), 6, 30)>
<!--- Otherwise, move to next year --->
<cfelse>
<cfset startDate = createDate( year(today), 7, 1)>
<cfset endDate = createDate( year(today) + 1, 6, 30)>
</cfif>
Run Code Online (Sandbox Code Playgroud)
至于查询,要记住两件事:
小心日期比较和BETWEEN操作员.如果SchoolDt列包含日期和时间,则结果可能与您的预期不符.一个更灵活的构造(即使列包含日期和时间,仍然有效)是:
WHERE SchoolDt >= <cfqueryparam value="#startDate#" cfsqltype="cf_sql_date">
AND SchoolDt < <cfqueryparam value="#dateAdd('d', 1, endDate)#" cfsqltype="cf_sql_date">
Run Code Online (Sandbox Code Playgroud)
如果您使用新的Query(),请参数化sql字符串并使用addParam:
yourQuery.addParam( name="startDate"
, value="#startDate#"
, cfsqltype="cf_sql_date" );
yourQuery.addParam( name="endDate"
, value="#endDate#"
, cfsqltype="cf_sql_date" );
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |