2014-03-04 42 views
0

我的要求是將@STARTDATE變量設置爲01 [開始日期] - 月[當前月份] - 年份[當前年份]並基於月份2月28天@ENDDATE變化,揚31天我需要將開始日期和結束日期設置爲存儲過程中的變量

 DECLARE @STARTDATE DATETIME 
DECLARE @ENDDATE DATETIME 

基於月份我們把結束日期

 DECLARE @MONTH int 
    SET @MONTH=(select MONTH(getdate())) 

我在這裏無法顯示在STARTDATE的日期。

SET @STARTDATE = '[email protected]+-+YEAR+' 
IF (
     @MONTH = 4 
     OR @MONTH = 6 
     ) 
    SET @ENDDATE = '[email protected]+-+YEAR+' 
IF (@MONTH/4 = 0) 
    SET @ENDDATE = '[email protected]+-+YEAR+' 
ELSE 
    SET @ENDDATE = '[email protected]+-+YEAR+' 
+1

後找到@startdate,只加1個月,然後使用DATEADD()函數減去1天 – Eralper

回答

3
select @STARTDATE = dateadd(m, datediff(m, 0, current_timestamp), 0) startdate, 
     @ENDDATE = dateadd(m, datediff(m, 0, current_timestamp) + 1, -1) enddate 
+2

當我們試圖在'@STARTDATE'和'@ENDDATE'之間檢索數據時。然後,該記錄將不會被檢索到哪個交易日期與'@ENDDATE'相同。因爲'@ ENDDATE'的時間是凌晨12:00。 – Shell

+2

@Nimesh - 如果您想要搜索具有時間組件的日期時間數據,通常最好使用*獨佔*終點進行搜索(即,在此處將'@ ENDDATE'設置爲以下第一個月),然後在比較中使用'<'而不是'<='。 –

+1

@Nimesh Damien是對的。但是,當您試圖過濾記錄時,如果交易日期包含時間,則不會檢索最後日期的記錄。 – 2014-03-04 10:03:56

相關問題