1

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

4

4 回答 4

4

我认为最好让 SQL Server 处理此类项目的日期。如果客户端超过了该日期,那么如果客户端位于不同的时区或者某个客户端在其计算机上设置了错误的日期,那么您可能会遇到问题。另外,它是您需要在命令中发送的少一项。

于 2009-04-03T12:13:37.007 回答
1

我的观点是,只要方法一致,在哪里做就没有太大区别。

我怀疑它在性能或可维护性方面是否有很大的不同。

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

于 2009-04-03T12:14:17.143 回答
1

您应该考虑使用 UTC 而不是服务器本地时间来编写时间。这样,如果您必须将服务器从一个时区移动到另一个时区,您就不会遇到任何问题。

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

于 2009-04-06T08:24:40.557 回答
0

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

在适当的时候,我喜欢在事务开始时将变量 @RunDate 设置为 GETDATE(),并用 @RunDate 标记所有 CreateDate 和 LastChgDate 列。我从不在主键中使用日期,所以如果它们稍微偏离或相同,没关系。我觉得最好同时查看用户创建/更改的所有内容。

于 2009-04-03T13:26:48.747 回答