2017-02-28 117 views
0

正如例如 我有這個簡單的觀點對我的SQL數據庫SQL日期設置

SELECT  NOME 
    FROM   dbo.PROMO 
    WHERE  (VAL_DA < '28/02/2017 10:15:44') 

它的工作原理 後來我做一個備份和恢復的另一臺服務器

我跑了同樣的觀點在分貝並得到錯誤 sql的char數據類型轉換爲日期時間數據類型導致超出範圍datetime 我需要使變化日 - 月使它工作

SELECT  NOME 
    FROM   dbo.PROMO 
    WHERE  (VAL_DA < '02/28/2017 10:15:44') 

服務器屬性中的語言都是英文的。 我控制了2臺服務器之間的所有設置,並且看起來相同。 有沒有我應該找的其他設置? 有什麼建議嗎?

+2

有一些設置需要調整,但最好養成使用明確字符串的習慣(例如''2017-02-28T10:15:44'')或執行*顯式*字符串轉換爲'datetime's指定* style *參數。 –

回答

1

數據庫的每個登錄都可以覆蓋默認服務器語言。

即在爲數據庫創建登錄時,我們可以明確設置登錄的默認語言。例如us_english,uk_english等。

因此,無論服務器語言是什麼,用於附加數據庫的登錄名都明顯具有與用於執行備份的登錄名不同的語言設置。

SELECT language FROM syslogins 

可能源數據庫和目標數據庫的語言都不同。

在你的情況下,源代碼的登錄有語言uk_english但目標數據庫的登錄有Us_english

要保留日期格式,您需要將目標數據庫的登錄語言配置爲與源數據庫的登錄相同。

+0

謝謝謝克爾解決了,你很棒,我知道我可以使用不同的格式來翻譯語言,但是這裏的代碼已經寫好了,我只需要更改服務器。再次感謝。 – lucullo08

+0

@ lucullo08 Kudos !!。標記答案,如果它有幫助:) –

+0

上帝,我不知道如何,請告知 – lucullo08