次のコードを検討してください (以前のスレッドPlaying around with date range in ColdFusion 8のコンテキストで)。
<cfparam name="Form.startdate" default="#dateformat(now()-5, 'mm/dd/yyyy')#">
<cfparam name="Form.enddate" default="#dateformat(now()-1, 'mm/dd/yyyy')#">
<cfparam name="Form.selectdate" default="#dateformat(now(), 'mm/dd/yyyy')#">
<cfinput type="dateField" name="startdate" label="Start Date" width="100" value="#Form.startdate#">
<cfinput type="dateField" name="enddate" label="End Date" width="100" value="#Form.enddate#">
<cfinput name="submit" type="submit" value = "Apply">
<cfinput name="cancel" type="submit" value="Download CSV">
次の質問があります。
1) ユーザーがカレンダーから日付 (開始日) を選択すると、日付は次の行の「値」フィールドに自動的に渡されますか?
<cfinput type="dateField" name="startdate" label="Start Date" width="100" value="#Form.startdate#">
上記が当てはまる場合、終了日にも同じことが当てはまると思います。
2) SQL クエリについて:
次のクエリを書いているとします (「UpdatedDate」は、「開始日」と「終了日」を取得する列の名前であることに注意してください。
<cfquery datasource = "XX.XX.X.XX" name="qMyDatabase">
SELECT(SELECT count(*) FROM MyDatabase) AS TOTAL_CONNECTIONS,
(SELECT count(*) FROM MyDatabase WHERE event_vc = "OPEN" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate# ) AS OPEN_CONNECTIONS,
(SELECT count(*)FROM MyDatabase WHERE event_vc = "BOUNCE" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate#) AS BOUNCE_CONNECTIONS,
(SELECT count(*) from MyDatabase where event_vc = "DEFERRED" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate#) AS DEFERRED_CONNECTIONS,
(SELECT count(*) from MyDatabase where event_vc = "DELIVERED" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate#) AS DELIVERED_CONNECTIONS,
(SELECT count(*) from MyDatabase where event_vc = "DROPPED" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate#) AS DROPPED_CONNECTIONS,
(SELECT count(*) from MyDatabase where event_vc = "PROCESSED" AND UpdatedDate BETWEEN #Form.startdate# AND #Form.enddate#) AS PROCESSED_CONNECTIONS,
(ROUND((SELECT OPEN_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "OPEN",
(ROUND((SELECT DEFERRED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DEFERRED",
(ROUND((SELECT DELIVERED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DELIVERED", (ROUND((SELECT DROPPED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "DROPPED", (ROUND((SELECT PROCESSED_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "PROCESSED";
</cfquery>
上記のクエリが正しいと思われるかどうか教えてください。
3) 日付形式について。
前述のように、私はマスクを使用しています
mm/dd/yyyy
上記、データベースの列(UpdatedDate)は異なる形式を使用していますが
(YYYY/MM/DD HH:MI:SS)
. 問題が発生することはありますか?