2012-02-15 4 views
1

私はショッピングカートにバウチャーシステムを持っています。バウチャーは有効な有効期限と有効期限があります。 有効であることを確認する最良の方法は何ですか?ColdFusionまたはSQLで日付の掘り下げ

私は今日の日付を愚かに設定し、今日の日付が開始日以上かどうかをデータベースに尋ねました。すなわち、02/02/2012 GTE 15/02/2012明らかにそうではありません。私はその後、有効期限が今日までLTEであるかどうかをデータベースに尋ねていました。すなわち、29/02/2012 LTE 15/02/2012もう一度それはありません!私はそれを紙の上に置くと右に聞こえた!

以下のコードは、ヨーロッパの日付に大きく役立つため、カスタムタグを使用して日付を正しく変換しています。 FYI:日付フィールドは、SQLデータベースで日付に設定されています。

今日の日付が開始日と終了日の間にあることを確認する必要があります。 ColdFusionで日付スパンを作成するか、またはColdFusionでBETWEEN演算子を使用するのが最適でしょうか?

<cfset todaysDate = DateFormat(now(), "dd/mm/yyyy")> 
<CF_convertDate inputVariable="todaysDate" inputMask="EU" outputType="odbcdate" outputVariable="myDate"> 

<cfquery name="chk_voucher" datasource="#application.dsn#"> 
SELECT 
    uid_vouchers, 
    txt_vouch_name, 
    txt_vouch_descrip, 
    txt_vouch_code, 
    txt_vouch_type, 
    txt_vouch_percent, 
    txt_vouch_value, 
    dte_vouch_expiry, 
    dte_vouch_start, 
    uid_vouch_webid, 
    bit_vouch_archived, 
    txt_vouch_asign 
FROM dbo.tbl_vouchers 
WHERE bit_vouch_archive=<cfqueryparam cfsqltype="cf_sql_bit" value="no"> 
AND dte_vouch_start >= #myDate# AND dte_vouch_expiry <= #myDate# 
AND txt_vouch_code=<cfqueryparam cfsqltype="cf_sql_varchar" value="#form.txt_vouch_code#"> 
</cfquery> 

何か助けてください!

答えて

2

あなたは、あなたは自分のオペレーターが逆転している、正しい考えを持っています。

  • 開始日はアクティブ日前をする必要があり、終了日は

はちょうどあなたのWHERE句でこれを変更するアクティブな日付の後をしなければなら

  • AND dte_vouch_start <= #myDate# AND dte_vouch_expiry >= #myDate# 
    

    (もちろん、#myDate#の変数はにする必要がありますタグ)

  • +0

    ありがとうございました!明らかに明確に考えていないことは明らかです!今すぐ '

    1
    AND dte_vouch_start <= #myDate# AND dte_vouch_expiry >= #myDate# 
    

    または

    AND #myDate# BETWEEN dte_vouch_start AND dte_vouch_expiry 
    
    関連する問題