1

私のストアド プロシージャでは、StartDate フィールドと EndDate フィールドが Varchar(10) にあります。

@StartDate Varchar(10),
@EndDate Varchar(10)

開始日 03/01/2013 および 03/04/2013 の UI からの入力を行っています。

終了日については、1 日追加する必要があります + つまり、EndDate が 03/04/2013 の場合、それを 03/05/2013 に更新する必要があります。

ありがとう

4

2 に答える 2

6

これが新しいストアド プロシージャである場合 (またはそれを使用する他のコードではない場合)、変数を日付型に変更することをお勧めします。if you comparing data by date 比べるべきだ からDates not varchar values

変数のタイプを変更すると、以下のように関数をCAN使用して日を追加できます。DATEADD()

--if @enddate is a date type
select @enddate = dateadd(day,1,@enddate)

変数の型を変更する場合は、それらを(つまり; )CANNOTに渡すことをお勧めします。これは、現在の文字列形式がカルチャ固有であり、カルチャが異なるサーバーではクエリが失敗する可能性があるためです。ISO formatyyyymmdd

--date pass as yyyymmdd (not culture specific)
select @enddate = convert(varchar(10), 
                      dateadd(day, 1, convert(date, @enddate)), 101)

--date pass as mm/dd/yyyy (US culture)
select @enddate = convert(varchar(10), 
                      dateadd(day, 1, convert(date, @enddate,101)), 101)
于 2013-03-04T18:09:04.273 に答える
3

SET @EndDate = DATEADD (d, 1, CAST(@StartDate AS datetime))として答えを与えますdatetime。必要に応じて、varchar に戻すことができます。

SET @EndDate = CAST(DATEADD (d, 1, CAST(@StartDate AS datetime)) AS varchar(10))

于 2013-03-04T17:55:51.490 に答える