ColdFusion查询四天前

时间:2012-11-09 12:03:26

标签: sql coldfusion

我想查询4天前的订单信息。我不能完全使用查询来使用当天的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&#39;发货后四天审核我们。

我想我的日期设置不太合适。我哪里错了?

1 个答案:

答案 0 :(得分:3)

这是因为您的过滤日期基于now(),其中包含时间组件。所以now()-4对我来说是5/11/2012,但是在下午12:10。您只想使用过滤器的日期部分。

您永远不应该在SQL字符串中对动态值进行硬编码,因此首先使用<cfqueryparam>来设置动态值参数,然后使用CF_SQL_DATE作为类型,应该只传递日期,而不是日期/时间。我目前无法为您测试此问题,但请尝试...如果它仍然超过日期/时间的时间部分,则使用{{1}创建仅包含日期部分的日期对象}。