在{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()
但我们仍然有相同的结果。
这个问题很奇怪,因为我没有将任何值传递给可能影响GETDATE()函数的SP。
如果您需要其他信息,请随时提出帮助以解决此问题。
其他信息(更新):
答案 0 :(得分:0)
也许试试SYSDATETIMEOFFSET()
所以你可以检查不同的时区是否会导致问题 - 如果是的话:
完整解决方案/所有学分:Getdate() function to get date for my timezone
答案 1 :(得分:0)
由于两者都将在SQL Server上执行,结果将是相同的,但第二个将根据.Net当前的文化和数据格式返回和处理,在您的情况下似乎不同。
如果您将.Net应用程序的文化设置为其他内容,例如:ar-sa,它将以Hijri格式显示数据,这将完全不同:)