【问题标题】:SQLServer INSERT getdate() function using parametersSQLServer INSERT getdate() 函数使用参数
【发布时间】:2011-07-08 21:25:34
【问题描述】:

使用 INSERT 命令和 executenonquery 将当前日期/时间添加到 SQL Server 表中的首选方法是什么?我期待类似...

        cmd.Parameters.Add("@theDate", SqlDbType.VarChar, 20)
        cmd.Parameters("@theDate").Value = "getdate()"

【问题讨论】:

    标签: asp.net sql-server vb.net sqlparameter executenonquery


    【解决方案1】:

    首先,您应该为列使用 DateTime 数据类型。其次,在该列上,您可以使用 DefaultValue=getdate() 约束,因此它仅在 DB 中定义。应用程序不需要插入它。

    【讨论】:

    • 那会很方便。我会检查一下。
    • 反对者应该解释 SO 政策中定义的错误。这是完全可靠和标准的做事方式,我想知道什么是不正确的。
    • 托马斯,我不确定你的意思。我没有否决你的回答。事实上,我赞成它,因为它提供了丰富的信息。 MF 的回答立即对我有用。我现在无法检查您的答案(尽管我认为它会起作用),因为我对数据库的唯一访问是通过我自己编写的 aspx 程序 - 并且数据库管理员正在休假。感谢您的回复。谢谢,tff。
    【解决方案2】:

    怎么样...

    cmd.Parameters.Add("@theDate", SqlDbType.DateTime)
    cmd.Parameters("@theDate").Value = DateTime.Now
    

    【讨论】:

    • 成功了!几分钟后我无法将此标记为正确答案,但谢谢!
    • -1 设置插入日期应由数据库处理,而不是应用程序。
    • @Tomas 他的问题非常具体,这回答了这个问题。如果日期是当前时间以外的任何时间,那么数据库中的默认值是不够的,他需要知道如何做到这一点。
    【解决方案3】:
    cmd.Parameters("@theDate").Value = Now()
    

    【讨论】:

      【解决方案4】:

      不需要日期/时间参数。

      每当调用存储过程时,您只需在服务器级别更新日期/时间字段。

      如果您希望能够将日期/时间字段更新为当前时间以外的其他值,那么您可以在存储过程中添加一个可选参数;这样,您的服务器可以在它为 null 时将其更新为 getdate(),或者您可以在需要特定时间时从应用程序传递它。

      Tomas 之所以强调在服务器级别设置时间的重要性,是因为时区和其他因素。

      【讨论】:

        【解决方案5】:

        我想看看你是否可以将文本current_timestamp直接放入sql代码中,并完全跳过参数。如果你不能,那么是时候使用 DateTime.Now 了。

        【讨论】:

          猜你喜欢
          • 2015-10-13
          • 2017-05-20
          • 2014-05-15
          • 2016-09-14
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          • 1970-01-01
          • 2018-04-07
          相关资源
          最近更新 更多