Я пытаюсь получить заказы между определенными датами, используя оператор BETWEEN
в SQL.
Мои форматы даты представлены в формате дд / мм / гггг.
ord_fdate - дата от: В настоящее время 01/03/2012
ord_tdate - дата: в настоящее время 07.03.2012
Я думал, что это вернет все заказы с 01.03.2012 (включая 01.03.2012) по 07.03.2012 (включая 07.03.2012).
Однако, он не получает заказы с датами 03/03/2012
Мой запрос ниже; я также включил выходные данные отладки запроса;
<cfset ord_fdate = DateFormat(ord_fdate, "dd/mm/yyyy")>
<cfset ord_tdate = DateFormat(ord_tdate, "dd/mm/yyyy")>
<cfquery name="getOrders" datasource="#application.dsn#">
SELECT
dbo.tbl_orders.uid_orders,
dbo.tbl_orders.dte_order_stamp
FROM
dbo.tbl_orders
WHERE dbo.tbl_orders.uid_order_webid=<cfqueryparam cfsqltype="cf_sql_integer" value="#session.webid#">
AND bit_order_archive=<cfqueryparam cfsqltype="cf_sql_bit" value="no">
AND txt_order_status=<cfqueryparam cfsqltype="cf_sql_varchar" value="Awaiting Dispatch">
AND dte_order_stamp BETWEEN <cfqueryparam cfsqltype="cf_sql_date" value="#createODBCDate(ord_fdate)#"> AND <cfqueryparam cfsqltype="cf_sql_date" value="#createODBCDate(ord_tdate)#">
ORDER BY dte_order_stamp DESC
</cfquery>
Debug;
WHERE (dbo.tbl_orders.uid_order_webid=?
AND bit_order_archive=?
AND txt_order_status=?
AND dte_order_stamp BETWEEN ? AND ?)
ORDER BY dte_order_stamp DESC
Query Parameter Value(s) -
Parameter #1(cf_sql_integer) = 1
Parameter #2(cf_sql_bit) = NO
Parameter #3(cf_sql_varchar) = Awaiting Dispatch
Parameter #4(cf_sql_date) = {ts '2012-03-01 00:00:00'}
Parameter #5(cf_sql_date) = {ts '2012-03-07 00:00:00'}
Не уверен, почему это не работает.
База данных SQL 2008
Есть идеи?