2010年7月26日 星期一

使用SET LANGUAGE 的SQL 語法彈性指定不同國家的日期語言

在網站運行時,我們想要提供一個目前日期的顯示文字,而且可以彈性的指定不同國家的日期語言,我們可以使用SET LANGUAGE這個SQL語法。首先,我們先看看如何查詢不同國家別的日期語言(如星期幾與月份的文字),我們可使用下列SQL語法查詢出可用的日期語言相關對應,這裡我們只示範查3個欄位:


select [name],alias,days from sys.syslanguages

查詢出來的資料庫內系統語言設定如下,可以看到不同語言名稱(name欄位與alias欄位)與其相對應的星期語言(days)顯示,當然還有其他欄位如months與shotmonths等等欄位可供查詢。





接著,我們要達成在程式執行的時候,動態產生不同國家的日期語言,我們可以使用下列方式的SQL語法,如我們要設定「繁體中文」的日期語言對應,我們可使用上面剛剛提到的語法,去查詢出來「繁體中文」的name或alias這兩個欄位後,執行如下的SQL語法:


SET LANGUAGE 'Traditional Chinese'


接下來我們可以加些變化,例如我們設定成「日文」日期語言,並且輸出今天的星期與「dd mm yyyy」的日期格式編號106(日期和時間樣式請參考這裡),SQL語法如下:


SET LANGUAGE 'Japanese'
SELECT DATENAME(Weekday, GETDATE()) AS Weekday
SELECT DATEPART(Weekday, GETDATE()) AS Weekday
SELECT CONVERT(nvarchar(11),GETDATE(),106) AS Japanese_Datetime
GO


我們可以看出今天為星期一,執行該語法後,已經輸出成日文的「星期一」=「月曜日」。



動態的指定輸出的日期語言,使得我們可更有彈性的客製化各種不同國家的日期時間語言,增加網頁呈現的多樣性。

沒有留言:

張貼留言