.net MSSQL2008良好实践中的默认值或绑定?

.net MSSQL2008良好实践中的默认值或绑定?,.net,sql-server-2008,default-value,.net,Sql Server 2008,Default Value,例如,如果您在MSSQLServer2008中的列上设置了datetime数据类型,该数据类型提供了datecreated,那么最好是让.NET层传递当前日期,还是将该列的默认值或绑定设置为(getdate())?我认为最好让SQL server处理类似项目的日期。如果客户机传递了日期,那么如果客户机位于不同的时区,或者如果一个客户机在其机器上设置了错误的日期,则可能会遇到问题。另外,您需要在命令中发送的项目少了一个。我认为最好让SQL server处理类似项目的日期。如果客户机传递了日期,那么

例如,如果您在MSSQLServer2008中的列上设置了datetime数据类型,该数据类型提供了datecreated,那么最好是让.NET层传递当前日期,还是将该列的默认值或绑定设置为(getdate())?

我认为最好让SQL server处理类似项目的日期。如果客户机传递了日期,那么如果客户机位于不同的时区,或者如果一个客户机在其机器上设置了错误的日期,则可能会遇到问题。另外,您需要在命令中发送的项目少了一个。

我认为最好让SQL server处理类似项目的日期。如果客户机传递了日期,那么如果客户机位于不同的时区,或者如果一个客户机在其机器上设置了错误的日期,则可能会遇到问题。另外,您需要在命令中发送的项目少了一项。

我的观点是,只要方法一致,在哪里发送就没有多大区别

我怀疑它在性能或可维护性方面有多大区别


我的首选是使用getdate()在数据库中创建它,但是这在使用ORM时会导致问题。

我的观点是,只要方法一致,在哪里创建它没有多大区别

我怀疑它在性能或可维护性方面有多大区别


我的首选方法是使用getdate()在数据库中创建该列,但是这在使用ORM时会导致传递中出现问题。

我会使用默认值getdate()创建该列,但我会让存储过程设置实际值我认为使用不包含所有列的INSERT语句是不好的做法


如果合适,我希望在事务开始时将变量@RunDate设置为GETDATE(),并将所有CreateDate和LastChgDate列标记为@RunDate。我从不在主键中使用日期,所以如果它们有点不一致,也没关系。我觉得最好同时看到用户创建/更改的所有内容。

我会使用默认值GETDATE()创建该列,但我会让存储过程设置实际值我认为使用不包含所有列的INSERT语句是不好的做法


如果合适,我希望在事务开始时将变量@RunDate设置为GETDATE(),并将所有CreateDate和LastChgDate列标记为@RunDate。我从不在主键中使用日期,所以如果它们有点不一致,也没关系。我觉得最好是同时看到用户创建/更改的所有内容。

你应该考虑在UTC中编写Times,而不是服务器本地时间。这样,如果必须将服务器从一个时区移动到另一个时区,则不会出现任何问题


例如,我们正在将服务器从德克萨斯州转移到加利福尼亚州。主生产应用程序对所有日期时间值使用UTC时间。但是,票务系统使用服务器时间,票务应用程序将值更改为用户本地时间,假设服务器位于德克萨斯州。当我们把服务器移到加利福尼亚,所有的值都会很混乱,所有的值都是2小时。

你应该考虑用UTC来代替TimeServer本地时间。这样,如果必须将服务器从一个时区移动到另一个时区,则不会出现任何问题

例如,我们正在将服务器从德克萨斯州转移到加利福尼亚州。主生产应用程序对所有日期时间值使用UTC时间。但是,票务系统使用服务器时间,票务应用程序将值更改为用户本地时间,假设服务器位于德克萨斯州。当我们将服务器移动到加利福尼亚州时,一切都会变得非常混乱,并且所有值都是2小时后的值