0

私はまだSQLに慣れていないので、私が尋ねているこの質問はあなたにとって簡単かもしれません. そのため、毎週、資金提供された契約の過去 14 日間 (または 2 週間) を生成するレポートを作成しています。これは特定の会社にハードコードする必要があることを知っています。その特定の会社の ID は '55' です。誰かこの機能を手伝ってくれませんか? 私が知っている私のクエリはまだ終了していません。これに Date 関数を入力する方法に行き詰まっています。

Create PROC [dbo].[spAdminFundedDateee]

   Begin

        SELECT  c.program_id, d.dealer_code,b.last_name As DealerName, a.account_no, a.vin, 
                ((e.last_name)+','+(e.first_name)) As Name, a.funded_date, a.cancel_refund_date,
                  a.purchase_date,a.miles, a.duration,a.sale_price,a.number_of_payments,
                  a.sales_tax, a.downpayment

        from tDealer d 
    Join tContact b ON d.contact_id = b.contact_id 
    Join tContract a On d.dealer_id = a.dealer_id 
    Join tCompany c ON d.company_id= c.company_id
    Join tContact E On e.contact_id = a.contact_id

        Where c.program_id = 55 And a.funded_date between 

      End

    exec spAdminFundedDateee '05/1/2014','05/30/2014','55'
4

3 に答える 3

0

a.funded_date が DATETIME の場合

a.funded_date between dateadd(day,-14,getdate()) and getdate()

a.funded_date が DATE の場合

 a.funded_date between cast(dateadd(day,-14,getdate()) as date) and cast(getdate() as date)
于 2014-06-18T19:08:54.590 に答える
0

a.funded_date が今日の日付から 2 週間前までの間にあるかどうかを確認するには、いくつかの SQL サーバー関数が必要になります。最初のものはGetDate()です。これは、現在の日付と時刻を datetime 値として返します。

ここで、(時刻ではなく) 日付パラメーターのみを確認します。誰かがストアド プロシージャを午後 1 時に実行した場合、14 日前の日の午後 1 時より前のすべてのデータを削除したくはありません。いつでも、14 日前からのすべてのデータが必要です。この問題を解決するには、getDate() を日付のみに変更します。したがって、キャスト(getDate()を日付として)。今日、これは 6-18-14 を返します。

最後に、2 週間前の日付を確認します。dateAddを使用すると、指定した任意の時間を日付または時刻に追加できます。この場合、14 日前の情報が必要です。これは、dateadd(dd, -14, cast(getDate() as date)) のようになります。

between は包括的であるため、あとはまとめるだけです。

between dateadd(dd, -14, cast(getDate() as date)) and cast(getDate() as date)
于 2014-06-18T19:13:10.920 に答える