Как ввести дату в таблицу в TSQL? (Ошибка преобразования типа данных varchar в datetime) - PullRequest
1 голос
/ 16 июня 2011

Я хочу ввести 30/10/1988 в качестве даты для столбца DOB в таблице, используя процедуру

alter procedure addCustomer 
@userName varchar(50),
@userNIC varchar(50), 
@userPassword varchar(100), 
@userDOB datetime, 
@userTypeID int, 
@userEmail varchar(50), 
@userTelephone int, 
@userAddress char(100),
@userCityID int,
@status int output
as

    declare @userID int
    declare @eid int
    declare @tid int
    declare @aid int

    execute getLastRaw 'userID','tblUserParent', @userID output

    insert into tblUserParent values (@userID, @userName, @userNIC, @userPassword, @userDOB, @userTypeID)

    execute getLastRaw 'addressID','tblAddress', @aid output

    insert into tblAddress values (@aid, @userAddress, @userID, @userCityID)

    execute getLastRaw 'emailID','tblEmail', @eid output

    insert into tblEmail values (@eid, @userEmail, @userID)

    execute getLastRaw 'telephoneID','tblTelephoneNO', @tid output

    insert into tblTelephoneNO values (@tid, @userTelephone , @userID)
    insert into tblUserCustomer values (@userID, @eid , @tid, @aid)

... но выдает ошибку, когда я вхожу так '30 / 10/1988 '

Сообщение 8114, Уровень 16, Состояние 5, Процедура addCustomer, Строка 0 Ошибка преобразования типа данных varchar в datetime.

... но когда я вхожу, как только 30/10/1988 Неверный синтаксис рядом с '/'

Как мне это исправить?

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Если вы действительно хотите избежать возможности возникновения неоднозначных дат, вам следует всегда вводить их в одном из двух однозначных форматов дат Ответ уже выбран, и он действителен, но яверующий в распространении знаний;)

2 голосов
/ 16 июня 2011

Следующее работает как в SQL Server, так и в MySql без двусмысленности: yyyy-mm-dd, вот так:

INSERT INTO TableName(DateColumn) VALUES ('1988-10-30');

... в качестве дополнительного преимущества не возникает вопроса, будет ли это дата в американском или европейском стилев такие дни, как четвертое марта ...

1 голос
/ 16 июня 2011

Проверьте, есть ли настройка культуры, которую вы можете изменить, чтобы позволить вам использовать дд / мм / гггг.Я полагаю, что он ожидает мм / дд / гггг.

0 голосов
/ 16 июня 2011

Потенциально простой способ обойти эту проблему - использовать формат даты без неопределенности между mm/dd/yyyy и dd/mm/yyyy, например dd-mmm-yyyy, например: 30-OCT-1988

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...