2010-02-01 5 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 

Если я EXEC эту процедуру его выполнения, но есть ошибка в переменной даты типа. Он поднимает ошибку как invalid item '-'.

+1

что ** ТОЧНО ** это сообщение об ошибке ?? И какие значения вы передаете в параметре '@ Dob'? –

+1

Возможно, вы используете DB в более низком режиме совместимости? – keithwarren7

ответ

2

Это зависит от формата даты, который вы передаете.

Если это 'mm-dd-yy', вы можете использовать CONVERT(DATE, @Dob, 110), если это «dd-mm-yy», то CONVERT(DATE, @Dob, 105).

3

Это зависит от того, как вы проходите в значениях @Dob.

Лучше всего использовать формат ISO8601 - «YYYYMMDD» - так как это всегда будет правильно преобразовываться в DATE - независимо от ваших языковых и региональных настроек на вашем компьютере SQL Server.

0

В каком формате вы передаёте значения @Dob? И какую ошибку вы получаете точно?

Если вы передадите значения @Dob в формате mm-dd-yy, он должен работать правильно и ошибок не будет.

Смежные вопросы