我有一個表有列reportyear和reportmonth。對於reportyear,該列是一個vharchar(4),等於2016年格式。對於reportmonth,它是一個具有01,02,03等格式的varchar(2)。由於我們的最終用戶需要一個下拉日期,因此我有一個數據參數將兩者連接起來。所以我的參數是@ReportDate varchar(7)。從varchar年份和日期參數格式'2016-11'減去月份
我的問題是我的存儲過程中的一個選擇,我需要把where子句放回去一個月。所以如果我的參數等於'2016-11',我想要一個where子句,它返回'2016-10'。我已經成功地做到了這一點利用流動查詢:
SUBSTRING(@Reportdate, 1, 4) + '-' + cast(substring(@ReportDate, 6, 7) -1 as varchar(20))
這將返回「2016-10」如果我選擇「2016-11」的任何報告日期參數。 但經過進一步的思考,如果我的報告日期是一月份,這是行不通的,因爲上面的查詢只是字面上減去一個字符串值。所以如果我選擇'2016-01',上面的查詢將返回'2016-0'。
最終用戶希望SSRS中的下拉參數爲破折號,這就是爲什麼我聲明它爲varchar(7)以包含破折號@John Cappelletti – Lisbon
@Lisbon我更新了包含破折號,當我看到評論。 varchar(7)vs varchar(10)不是問題 –