为什么GETDATE()在SSMS与C#Microsoft.Practices.EnterpriseLibrary.Data上运行时产生不同的结果?
当在SSMS(SQL Server Management Studio)中的查询编辑器上执行时,为什么GETDATE()
会产生不同的结果,而与Microsoft.Practices.EnterpriseLibrary.Data
的Database.ExecuteNonQuery()
函数执行的结果有什么不同?为什么GETDATE()在SSMS与C#Microsoft.Practices.EnterpriseLibrary.Data上运行时产生不同的结果?
此GETDATE()位于更新表中日期的存储过程中。
调试由我们开发商SSMS:
EXEC [dbo].[SP_NameOfTheSPWithGetDate]()
= 2016年11月4日下午7时43
正通过运行最终用户的ASP.net网页:
Database SampleDB;
SampleDB.ExecuteNonQuery('[dbo].[SP_NameOfTheSPWithGetDate]');
= 2016年11月4日上午11点43
我怀疑的差异可能是因为+8的GMT的偏移量(我们的服务器在GMT + 8)他们运行相同的确切的SP,但为什么从GETDATE()不同的结果?
我们尝试了各种功能,以获得当前的日期,如:
GETUTCDATE()
CURRENT_TIMESTAMP
GETDATE()
GETSYSTEMDATE()
但我们仍然有同样的结果。
这个问题很奇怪,因为我没有将任何值传递给可能影响GETDATE()函数的SP。
如果您需要更多信息,请随时询问以帮助解决此问题。
附加信息(更新):
- 的一个托管ASP.Net网页服务器与SQL Server数据库不同。
也许尝试SYSDATETIMEOFFSET()
所以,你可以检查不同的时区导致的问题 - 如果是:
完整的解决方案/所有学分:Getdate() function to get date for my timezone
由于这两个将在SQL执行服务器,结果将是相同的,但第二个将根据.Net当前的文化和数据格式返回和处理,在您的情况看起来不同。
如果你设置你的.NET应用程序到别的东西,为前文化:AR-SA,它会显示在回历格式的数据,这将是完全不同的东西:)
可能是用户浏览器修正日期时间而不是发生在您的后端? – user1666620
我不这么认为,调用SP的人是后端C#。 – jestrange
检查这个问题,尤其是(非常长)的接受答案,也许它可以摆脱一些光:http://stackoverflow.com/q/2783348/1220550 –