2016-11-04 73 views
3

當在SSMS(SQL Server Management Studio)中的查詢編輯器上執行時,爲什麼GETDATE()會產生不同的結果,而與Microsoft.Practices.EnterpriseLibrary.DataDatabase.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


我懷疑的差異可能是因爲+8GMT的偏移量(我們的服務器在GMT + 8)他們運行相同的確切的SP,但爲什麼從GETDATE()不同的結果?

我們嘗試了各種功能,以獲得當前的日期,如:

  • GETUTCDATE()
  • CURRENT_TIMESTAMP
  • GETDATE()
  • GETSYSTEMDATE()

但我們仍然有同樣的結果。

這個問題很奇怪,因爲我沒有將任何值傳遞給可能影響GETDATE()函數的SP。

如果您需要更多信息,請隨時詢問以幫助解決此問題。

附加信息(更新):

  • 的一個託管ASP.Net網頁服務器與SQL Server數據庫不同。
+0

可能是用戶瀏覽器修正日期時間而不是發生在您的後端? – user1666620

+0

我不這麼認爲,調用SP的人是後端C#。 – jestrange

+0

檢查這個問題,尤其是(非常長)的接受答案,也許它可以擺脫一些光:http://stackoverflow.com/q/2783348/1220550 –

回答

0

由於這兩個將在SQL執行服務器,結果將是相同的,但第二個將根據.Net當前的文化和數據格式返回和處理,在您的情況看起來不同。

如果你設置你的.NET應用程序到別的東西,爲前文化:AR-SA,它會顯示在回曆格式的數據,這將是完全不同的東西:)

相關問題