2010-02-01 76 views
0

我無法使用存儲過程存儲日期數據類型變量。我的代碼是:SQL Server 2008存儲過程

ALTER PROCEDURE [dbo].[Access1Register] 
-- Add the parameters for the stored procedure here 
@MobileNumber int, 
@CitizenName varchar(50), 
@Dob char(8), 
@VerificationCode int 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    select CAST(@dob As DATE) 
Insert Into Access1 (MobileNo,CitizenName,Dob,VerificationCode) 
values(@MobileNumber,@CitizenName,@Dob,@VerificationCode) 
go 

如果我執行此過程它正在執行,但在日期類型變量中發生錯誤。它將錯誤提升爲invalid item '-'

+1

什麼** EXACTLY **是錯誤信息?你在'@ Dob'參數中傳遞了什麼樣的值? –

+1

你可能在低兼容性模式下運行數據庫嗎? – keithwarren7

回答

2

這取決於您傳遞的日期格式。

如果是'mm-dd-yy',則可以使用CONVERT(DATE, @Dob, 110),如果它是'dd-mm-yy',那麼CONVERT(DATE, @Dob, 105)

3

這取決於你如何通過@Dob值。

最好的辦法是使用ISO8601格式 - 'YYYYMMDD' - 因爲無論您的SQL Server計算機上的語言和區域設置如何,它都會正確轉換爲DATE。

0

以何種格式傳遞@Dob值?你究竟得到了什麼錯誤?

如果您將通過@Dob值的格式爲mm-dd-yy,它應該可以正常工作,並且不會出現任何錯誤。