SQLのBETWEEN
演算子を使用して、特定の日付の間に注文を取得しようとしています。BETWEENを日付SQLとColdfusionで使用する
私の日付の形式は、dd/mm/yyyy形式です。
ord_fdate日付からである。現在、2012年1月3日
ord_tdateは最新です:現在、2012年7月3日
私は、これは(01を含む2012年1月3日からすべての注文を返すだろうと思いました/ 03/2012)から2012年7月3日まで(2012年7月3日を含む)。
しかし、それは日付2012年7月3日
以下の私のクエリでの受注を得ることはありません。私は、クエリのデバッグ出力も含めました。
<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>
デバッグ;
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
任意のアイデアがありますか?
日付に時間コンポーネントが含まれている可能性はありますか?終了日に「07/03/2012 03:00:12」などの時間要素がある場合、それは一致しません。 "" –
@Jason - あなたは確かですか?DateFormat(..、 "dd/mm/yyyy")>あなたが思っていることを本当にやっているのですか? DateFormat(およびcreateODBCDate)は、*入力*が常に米国の日付形式であると仮定します。 – Leigh