2017-03-09 50 views
0

我無法控制運行SQL Server的服務器,我被告知需要將日期設置設置爲我的本地時區,這恰好是英國時區。在一系列服務器上測試日期時間設置/格式

其中一些設置爲美國日期格式,將日期轉換爲月日年,而不是日日月。

有沒有人有一個很好的方法來測試我所有的服務器的所有日期設置?

我在想每個服務器上都有一個名爲'OneSlashThreeSlashTwentySeventeenMonth'的過程。這個程序會說明它認爲哪個月份'1/3/2017'代表。

它可以將它們組合到一起報告March的服務器和報告一月份的服務器。

注意:此問題假定日期設置是在服務器級設置的,而不是數據庫級。如果可以將它們設置爲數據庫級別,那麼對每個服務器上的每個數據庫進行測試就更有意義了。

讓我可以運行的東西意味着我可以將它轉發給照顧我們服務器的人,並請求集體改變設置。

感謝所有幫助。

+0

我不確定你想要完成什麼,但也許你應該看看利用DAY(),MONTH()和YEAR()函數?在每臺服務器上製作一個過程,讓您將月份,月份和月份作爲單獨的列進行回溯?這樣就不會混淆哪個是哪個。 –

+0

爲什麼?日期格式僅用於顯示。 [Sql服務器不存儲日期顯示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) 可以使用datetime或'mm- dd-yyyyThh:mm:ss.nnn'用於插入日期時間值的字符串,並且在選擇日期時間值時,可以選擇日期時間值或使用convert來選擇所需的字符串格式。 –

回答

0

這個查詢將返回的日期部分的順序:

SELECT [dateformat] FROM sys.syslanguages WHERE [langid][email protected]@LANGID 

隨便看看到sys.syslanguages來了解詳情!

但說實話:這不應該是必要的。如果這是一個老問題(處理遺留系統),可能需要它,但是一般來說,只要必須將日期時間作爲字符串傳遞,通常應該使用以保持文化/語言獨立格式如果有可能的話,堅持一個不關心格式的輸入值

Here's a related answer

And here's another one

0

我想具有調用的過程的, 'OneSlashThreeSlashTwentySeventeenMonth',其存在的每個服務器上。這個程序會說明它認爲哪個月份'1/3/2017'代表。

它可以將它們組合到一起報告March的服務器和報告一月份的服務器。

+0

整個方法聞起來......你檢查了我的答案嗎?你爲什麼想要做一些非常複雜的事情?我的回答將會返回'dmy'或'mdy'或'ymd'立即告訴您默認演員如何解釋您的字符串。但是 - 正如我的回答中所述 - 你正在解決一個你根本不應該擁有的問題! – Shnugo

+0

情況聞起來很好。該解決方案是一個報告:a)說服負責服務器的人員調查日期設置,b)幫助他們儘快解決問題。 c)如果他們默默地更新設置並拒絕所有的知識,那麼讓我自己放心。事情是,我們採用基於Excel的報告,日期以英國格式化的字符串提供,因此服務器的日期設置決定'1/3/2017'是否被解釋爲'3月1日'或'1月3日'。當字符串作爲日期參數傳遞時,proc中的SET DATEFORMAT DMY不起作用。 –

相關問題