3

情報を選択するストアド プロシージャを作成していますが、日付のみを選択したいですか?

これは今のように見えます:

ALTER PROCEDURE [dbo].[AutoCompleate] 
 @DateFrom datetime,
 @DateTo datetime,
 @SearchField varchar(50)
 AS

 -- V1.0 : ShaunM : 15 jun 2012
    --  AutoComplete textbox

 exec ('
 SELECT DISTINCT ' +
 @SearchField + ' FROM SchemaAudit 
             ORDER BY ' + @SearchField +' ASC')

@DateTo と DateFrom の間のデータベースへのエントリの選択を実行したいのですが、これを行う方法を知っている人はいますか?

4

4 に答える 4

2

間で使用

Where StartDate BETWEEN @DateFrom and @DateTo

編集: Nalaka526 が指摘したように、EndDate を見逃しました。2 つのフィールドで BETWEEN を使用することはできません。varchar にキャストし、>= と <= を使用して範囲を比較する必要があります。Curtソリューションはそれを行っています。

 WHERE StartDate >= ' + Convert(varchar(20),@DateFrom) + 'AND EndDate >= ' + Convert(varchar(20),@DateTo) + '
于 2012-06-15T11:57:41.177 に答える
1

CAST次のように日付パラメーターを指定する必要がありvarcharます。

exec ('
     SELECT DISTINCT ' +
     @SearchField + ' FROM SchemaAudit WHERE StartDate >= "' + CAST(@DateFrom as varchar(20)) + '" AND EndDate >= "' + CAST(@DateTo as varchar(20)) + '"
                 ORDER BY ' + @SearchField +' ASC')
于 2012-06-15T11:57:45.040 に答える
-1

Convertこの手法を使用すると SQL インジェクション攻撃に対して脆弱になる可能性があるという事実を無視して、日付を varchar に変換するために使用する必要があります。

Convert(varchar(20), DateTime, 111)
于 2012-06-15T12:00:16.567 に答える