【问题标题】:problem with GetDate() in asp.netasp.net 中 GetDate() 的问题
【发布时间】:2009-02-15 16:04:12
【问题描述】:

GetDate() 方法有问题。当我创建任何新用户时,在 DateTime 字段中日期正确时间未正确出现,它应该始终显示生成系统日期和时间。例如: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());

【问题讨论】:

  • 您要使用 Web 服务器的日期时间,还是 SQL Server 的日期时间?

标签: sql-server datetime


【解决方案1】:

我建议进行两个更改:

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

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

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

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

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

请仔细检查 Login.DateTime 的类型!

【讨论】:

    【解决方案2】:

    如果您在存储过程中使用 getdate(),则您的参数 @DateTime 已过时。根据您的代码示例,它将被忽略。

    因此,如果我正确解释了您的问题,您的问题的根源一定在其他地方。

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

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

    【讨论】:

      【解决方案3】:

      您必须使用 Sql 2008,它是新的 Date 数据类型。

      创建过程 dbo.NewUser(@UserName varchar(50)、@Password varchar(50)、@EmailId varchar(50)、@DateTime 日期)

      将 Sql 代码更改为使用 DateTime(如果需要,还可以使用表格),您应该进行设置。

      【讨论】:

        【解决方案4】:

        使用 DateTime.Now 的日期

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

        另外我的建议是使用 UTC instaed

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

        【讨论】:

          猜你喜欢
          • 2021-06-15
          • 1970-01-01
          • 1970-01-01
          • 2015-02-07
          • 2011-04-23
          • 2011-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多