1

4日前の注文情報を問い合わせたい。ただし、1日の24時間を完全に使用するためのクエリを取得することはできません。

<cfquery name="rsByDate" datasource="#request.dsn#">
    SELECT tbl_customers.cst_FirstName
            , tbl_customers.cst_LastName
            , tbl_customers.cst_Email
            , tbl_orders.order_ID
            , tbl_orders.order_Date
    FROM  tbl_customers INNER JOIN tbl_orders 
               ON tbl_customers.cst_ID = tbl_orders.order_CustomerID
    WHERE tbl_orders.order_Date >= #CreateODBCDateTime(DateAdd("d",-5,Now()))#
    AND   tbl_orders.order_Date <= #CreateODBCDateTime(DateAdd("d",-4,Now()))#
    AND   order_Status = 3
    ORDER BY tbl_orders.order_Date DESC
</cfquery>

私が達成したいと思っているのは、このクエリを実行しcfmail、注文がステータス3「出荷済み」としてマークされてから4日後に顧客にレビューを依頼するために使用することです。

日付の設定が正しくないと思います。どこが間違っているのですか?

4

1 に答える 1

3

now()これは、フィルターの日付が時間コンポーネントを持つに基づいているためです。だからnow()-4私にとっては2012年5月11日ですが、午後12時10分です。フィルタには日付部分のみを使用します。

とにかくSQL文字列に動的な値をハードコーディングしないでください。最初に<cfqueryparam>動的な値をパラメータ化するために使用し、次にCF_SQL_DATEタイプとしてaを使用します。これは、日付/時刻ではなく、日付のみを渡す必要があります。現時点ではこれをテストする立場にはありませんが、試してみてください...それでも日付/時刻の時間部分を通過する場合は、を使用して日付部分のみで日付オブジェクトを作成しますcreateDate()

于 2012-11-09T12:13:37.343 に答える