我想查询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;发货后四天审核我们。
我想我的日期设置不太合适。我哪里错了?
答案 0 :(得分:3)
这是因为您的过滤日期基于now()
,其中包含时间组件。所以now()-4
对我来说是5/11/2012,但是在下午12:10。您只想使用过滤器的日期部分。
您永远不应该在SQL字符串中对动态值进行硬编码,因此首先使用<cfqueryparam>
来设置动态值参数,然后使用CF_SQL_DATE
作为类型,应该只传递日期,而不是日期/时间。我目前无法为您测试此问题,但请尝试...如果它仍然超过日期/时间的时间部分,则使用{{1}创建仅包含日期部分的日期对象}。