2017-10-06 85 views
1

我正在嘗試使用動態日期參數執行以下存儲過程,以便它在6個月前啓動到昨天。使用動態日期參數執行存儲過程 - 轉換錯誤

當我與美國英語語言設置的服務器時,它的工作原理然而,當我與英國語言設置一臺服務器上運行上運行我的錯誤:

Conversion failed when converting date and/or time from character string

我試圖日期轉換爲年月日,因爲這作品不過,我一直無法在所有服務器上 - 我甚至試圖強行進入VARCHAR,但沒有運氣:(

有沒有拿到日期YYYYMMDD格式的方式希望你能幫助

USE Reports 

DECLARE @DteStart DATETIME2(3) 
DECLARE @DteEnd  DATETIME2(3) 
SELECT @DteStart = DATEADD(MM, DATEDIFF(MM, 0, CONVERT(DATE,GETDATE(),103))-6,0) 
SELECT @DteEnd = DATEADD(DD, DATEDIFF(DD, 0, CONVERT(DATE,GETDATE(),103))-1,0) 
EXEC [dbo].[spReportsMyData] @DteStart, @DteEnd; 
+0

該代碼是產品特定的。標記您正在使用的dbms。 – jarlh

+0

如果在所有適當的位置使用['Date'](https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql)數據類型應該不成問題。擺弄你不想要的字符和字符串表示是瘋狂的方式。 PSA:[ISO日期格式](https://xkcd.com/1179/)。 – HABO

+0

我無法複製它?什麼'language'正在使用? – gotqn

回答

1

嘗試是這樣的:

Declare 
    @StartDate as Date 
    , @EndDate as Date 

Set @EndDate = DateAdd(Day, -1, Getdate()) 
Set @StartDate = DateAdd(Month, -6, @EndDate) 

Select 
    Convert(VARCHAR(10), @StartDate, 112) As StartDate 
    , CONVERT(VARCHAR(10), @EndDate, 112) As EndDate 

請問您的存儲過程需要認真的日期特別是在YYYYMMDD格式有關係嗎?

+0

根據以上評論代碼現在工作 - 謝謝你的答案:) – Baseline9