为什么GETDATE()在SSMS和C#Microsoft.Practices.EnterpriseLibrary.Data上运行时会产生不同的结果?

时间:2016-11-04 11:52:54

标签: c# sql asp.net sql-server date

在{SSMS(SQL Server Management Studio)中的查询编辑器上执行GETDATE()Microsoft.Practices.EnterpriseLibrary.Data Database.ExecuteNonQuery()函数执行的结果相比,Database SampleDB; SampleDB.ExecuteNonQuery('[dbo].[SP_NameOfTheSPWithGetDate]'); 产生不同结果的原因是什么?

此GETDATE()位于更新表中日期的存储过程中。

我们的开发人员在SSMS上进行调试:


    EXEC [dbo].[SP_NameOfTheSPWithGetDate]()

= 11/4/2016 7:43 PM

由最终用户运行ASP.net网页:

GETUTCDATE()

= 2016年11月4日上午11:43

我怀疑差异可能是因为 GMT +8 偏移(我们的服务器位于 GMT + 8 )相同的SP,但为什么不同的结果来自GETDATE()?

我们尝试了各种函数来获取当前日期,如:

  • CURRENT_TIMESTAMP
  • GETDATE()
  • GETSYSTEMDATE()
  • {{1}}

但我们仍然有相同的结果。

这个问题很奇怪,因为我没有将任何值传递给可能影响GETDATE()函数的SP。

如果您需要其他信息,请随时提出帮助以解决此问题。

其他信息(更新):

  • 托管ASP.Net页面服务器的服务器与SQL Server数据库不同。

2 个答案:

答案 0 :(得分:0)

也许试试SYSDATETIMEOFFSET()

所以你可以检查不同的时区是否会导致问题 - 如果是的话:

完整解决方案/所有学分:Getdate() function to get date for my timezone

答案 1 :(得分:0)

由于两者都将在SQL Server上执行,结果将是相同的,但第二个将根据.Net当前的文化和数据格式返回和处理,在您的情况下似乎不同。

如果您将.Net应用程序的文化设置为其他内容,例如:ar-sa,它将以Hijri格式显示数据,这将完全不同:)