在我的存儲過程我有一個起始日期和結束日期字段是VARCHAR(10)如何添加日期時間字段,以+1天
@StartDate Varchar(10),
@EndDate Varchar(10)
我從開始日期03/01的UI給人一種輸入/ 2013年和2013年3月4日
對於結束日期,我需要增加一個日+就是如果我的結束日期是2013年3月4日我需要更新到2013年3月5日..
謝謝
在我的存儲過程我有一個起始日期和結束日期字段是VARCHAR(10)如何添加日期時間字段,以+1天
@StartDate Varchar(10),
@EndDate Varchar(10)
我從開始日期03/01的UI給人一種輸入/ 2013年和2013年3月4日
對於結束日期,我需要增加一個日+就是如果我的結束日期是2013年3月4日我需要更新到2013年3月5日..
謝謝
SET @EndDate = DATEADD (d, 1, CAST(@StartDate AS datetime))
g給你答案爲datetime
。然後,您可以轉換回,如果你需要一個varchar:
SET @EndDate = CAST(DATEADD (d, 1, CAST(@StartDate AS datetime)) AS varchar(10))
這是給我一個錯誤,當我試圖做同樣的事情.. varchar類型的日期時間日期時間數據類型的轉換導致超出範圍值。 – user937194 2013-03-04 18:06:09
謝謝我明白了.. – user937194 2013-03-04 18:08:03
如果這是一個新的存儲過程(或不使用任何其他代碼),最好的辦法是改變你的變量Date類型。因爲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 format
(即; yyyymmdd
),因爲當前的字符串格式是特定文化和查詢可以在一個服務器失敗,不同的文化。
--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)
+1轉化爲美國英語 – 2013-03-04 19:52:42
檢查您的問題。更新之後,你也提到了相同的結果。你的意思是03/05/2013? – 2013-03-04 17:55:42
你有沒有用** DATEADD **和** CONVERT **一起看過? – 2013-03-04 17:56:19
是否有一個原因,你沒有使用日期數據類型呢?然後你可以簡單地使用dateadd()函數來添加一天。 – steoleary 2013-03-04 17:56:58