如何在TSQL中的表中输入日期? (将数据类型varchar转换为datetime时出错)

问题描述 投票:2回答:4

我想使用过程输入到表中DOB列的日期为30/10/1988

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时出错。

...但是当我只输入1988年10月30日时'/'

附近的语法不正确

我该如何解决?

我想使用过程更改过程addCustomer @userName varchar(50),@ userNIC varchar(50),@ userPassword varchar(100),@ userDOB将表中DOB列的日期输入为30/10/1988 ...

sql tsql syntax
4个回答
3
投票

以下内容可在SQL Server和MySql中正常工作:yyyy-mm-dd,如下所示:


3
投票

[如果您确实希望避免基于不明确日期的可能性,那么您应该始终在已经选择的两个unambiguous date formats答案之一中输入它,并且它是有效的,但是我相信您会传播知识;)


1
投票

查看是否存在可以更改的文化设置,以允许您使用dd / mm / yyyy。我相信这是期望的mm / dd / yyyy。


0
投票

解决该问题的一种可能的简便方法是使用日期格式,在mm/dd/yyyydd/mm/yyyy之间没有歧义,例如dd-mmm-yyyy,例如:30-OCT-1988

© www.soinside.com 2019 - 2024. All rights reserved.