2.3.4 SET LANGUAGE
SET LANGUAGE指定会话的语言环境。会话语言确定了datetime显示格式和系统信息。
SET LANGUAGE的具体语法如下:
SET LANGUAGE { [ N ] 'language' | @language_var }
其中参数[N]'language' | @language_var是存储在系统表syslanguages中的语言名称,表结构定义可以参考表2-5,语言名称与syslanguages系统表的关系可以参考表2-6。该参数可以是UNICODE,或者是转换为UNICODE的DBCS(双字节字符集)。若要指定使用UNICODE的语言,应使用N'language'。如果将语言指定为变量,则变量的数据类型必须为sysname。
SET LANGUAGE是在执行或运行时设置,而不是在分析时设置。它仅作用于当前会话环境,当前会话环境关闭后自动失效。
受SET LANGUAGE设置影响的日期处理函数是DATENAME和CONVERT,具体的影响如表2-6所示。
表2-6 SET LANGUAGE 、DATENAME、CONVERT与系统表syslanguages列的关系
|
列名 |
与SET LANGUAGE 、DATENAME、CONVERT的关系 |
|
name |
SET LANGUAGE的language(语言名称)的许可参数 |
|
alias |
|
|
months |
决定DATENAME (Month,date )的返回值 |
|
shortmonths |
影响CONVERT 将日期转换字字符,Style={6,106,7,107,9,109,13,113,100}时,输出的字符串中的month部分的值 |
|
days |
决定DATENAME (Weekday,date )的返回值 |
以下示例演示了在不同的语言环境下,DATENAME与CONVERT函数的不同结果。
USE master
--设置会话的语言环境为: English
SET LANGUAGE N'English'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果:
Month Weekday CONVERT
------------- -------------- -------------------------------
March Tuesday Mar 15 2005 8:59PM
--*/
--设置会话的语言环境为: 简体中文
SET LANGUAGE N'简体中文'
SELECT
DATENAME(Month,GETDATE()) AS [Month],
DATENAME(Weekday,GETDATE()) AS [Weekday],
CONVERT(varchar,GETDATE(),109) AS [CONVERT]
/*--结果
Month Weekday CONVERT
------------- --------------- -----------------------------------------
05 星期四 05 19 2005 2:49:20:607PM
--*/





