Sql server asp.net中的GetDate()存在问题

Sql server asp.net中的GetDate()存在问题,sql-server,datetime,Sql Server,Datetime,我对GetDate()方法有问题。当我创建任何新用户时,在DateTime字段Date is coming the time is correceive time is not correceive time,它应该显示generate always system日期和时间。例如:2/6/2009 12:00:00 am、2/7/2009 12:00:00 am、2/8/2009 12:00:00 am等。我的意思是这里 日期正在更改,但系统时间未更改。 这是我的密码: CREATE PROCE

我对GetDate()方法有问题。当我创建任何新用户时,在DateTime字段Date is coming the time is correceive time is not correceive time,它应该显示generate always system日期和时间。例如:2/6/2009 12:00:00 am、2/7/2009 12:00:00 am、2/8/2009 12:00:00 am等。我的意思是这里 日期正在更改,但系统时间未更改。 这是我的密码:

CREATE PROCEDURE dbo.NewUser
(
@UserName varchar(50),
@Password varchar(50),
@EmailId varchar(50),
@DateTime Date
)
AS
insert into Login(UserName,Password,EmailId,DateTime)
       values(@UserName,@Password,@EmailId,GetDate())


com.Parameters.Add("@DateTime", DateTime.Now.ToShortTimeString());

我建议作出两项改变:

  • 将存储过程的参数更改为,而不是仅更改为。(还有其他选项,例如。)日期类型仅存储日期,因此不显示任何时间也就不足为奇了:)如果表的架构使用
    date
    列,则还需要更改表
  • 调用时不要将参数值转换为字符串。使用

    com.Parameters.Add("@DateTime", DateTime.Now);
    

您可能还想考虑使用UTC代替服务器上的本地时间。

编辑:splattne完全正确-通过在存储过程中调用GetDate,您的参数值是无关的。假设确实要使用该参数,请将存储过程的主体更改为:

   insert into Login(UserName, Password, EmailId, DateTime)
   values(@UserName, @Password, @EmailId, @DateTime)

不过,请仔细检查登录名.DateTime的类型

您必须使用Sql 2008及其新的日期数据类型

创建过程dbo.NewUser(@UserName-varchar(50),@Password-varchar(50),@EmailId-varchar(50),@DateTime-Date)

将Sql代码更改为使用DateTime(如果需要,还可以使用表)。如果在存储过程中使用getdate(),则参数@
DateTime
已过时。根据您的代码示例,它将被忽略

所以,如果我正确地解释了你的问题,你的问题的根源一定在别的地方

我将检查SQL表中日期列的数据类型。表格声明应为:

UserName varchar(50)
Password varchar(50)
EmailId  varchar(50)
DateTime DateTime  /* not "Date" */

使用日期时间的日期。现在

com.Parameters.Add("@DateTime", DateTime.Now.Date)
另外,我的建议是使用UTC instaed

com.Parameters.Add("@DateTime", DateTime.UtcNow.Date)

要使用web服务器的日期时间还是SQL服务器的日期时间?