2

SQL Server 2008 で 2 つの日付の間にステータス 0 のレコードを数えようとしていますが、手順は正しくありません。

メッセージ 156、レベル 15、状態 1、プロシージャ sp_SerchPickupHispanicBetweenDates、6 行目
キーワード 'between' 付近の構文が正しくありません。

手順は次のようになります

CREATE procedure sp_SerchPickupHispanicBetweenDates
@date1 date,
@date2 date
as 
select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and pickupdate like between @date1+ '%' and @date1 +'%'

インターネットで検索ソリューションを試していましたが、成功しませんでした。それを正しく書く方法はありますか?また、完璧に機能するselect文があります

select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and pickup.pickupdate between '2006-07-01' and '2010-12-31'
4

6 に答える 6

4

およびパラメーターはデータ型@date1であるため、これらの値にaを追加することはできません(演算子を使用する場合は文字列ベースのデータ型にのみ使用できます。また、値を使用した検索には適用できません)。@date2DATE%%LIKELIKEDATE

代わりにこれを使用してください:

CREATE procedure procSerchPickupHispanicBetweenDates
   @date1 date,
   @date2 date
AS
   SELECT COUNT (Pickuphispanic) 
   FROM dbo.pickup
   WHERE Pickuphispanic = 1 
     AND pickupdate BETWEEN @date1 AND @date2

これを呼び出すには、次の構文を使用します。

EXEC procSerchPickupHispanicBetweenDates '2006-07-01', '2010-12-31'

(中括弧なし、括弧なし-2つの日付を指定するだけです)、または:

EXEC procSerchPickupHispanicBetweenDates @date1 = '2006-07-01', @date2 = '2010-12-31'
于 2013-02-19T09:18:44.623 に答える
2

2つの日付の間で検索しようとしている場合、ストアドプロシージャは次のようになっている必要があります。

pickupdate between @date1 and @date2

LIKE関数を使用する必要はありません

于 2013-02-19T09:19:35.030 に答える
1

Likeは関数のでネストできません。

これを試して:

CREATE procedure sp_SerchPickupHispanicBetweenDates
@date1 date,
@date2 date
as 
select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and CONVERT(VARCHAR(25), pickupdate , 126) like  @date1 + '%' and @date1 + '%'

よろしく

于 2013-02-19T09:20:00.283 に答える
1

次のようにクエリを変更します。

SELECT COUNT ( Pickuphispanic_ID ) from  pickup
where  Pickuphispanic = 1 and pickupdate between @date1 AND @date2

また

SELECT COUNT ( Pickuphispanic_ID ) from  pickup
where  Pickuphispanic = 1 and pickupdate> @date1 AND pickupdate<@date2
于 2013-02-19T09:20:24.693 に答える
0

Like は関数の間でネストできません。

のように使いたい場合は、このようにする必要があります

CREATE procedure sp_SerchPickupHispanicBetweenDates
@date1 date,
@date2 date
as 
select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and (CONVERT(VARCHAR, pickupdate ,106) like  CONVERT(VARCHAR,@date1,106) + '%' or CONVERT(VARCHAR, pickupdate ,106) like   CONVERT(VARCHAR,@date2,106) + '%')

その間に使用したい場合は、このようにする必要があります

CREATE procedure procSerchPickupHispanicBetweenDates
   @date1 date,
   @date2 date
AS
   SELECT COUNT (Pickuphispanic) 
   FROM dbo.pickup
   WHERE Pickuphispanic = 1 
     AND Convert(date,pickupdate) BETWEEN Convert(date,@date1) AND Convert(date,@date2)
于 2015-08-31T11:19:37.850 に答える