|
SQL Server的syslanguage表应用一例(1)
----------------------------------------------------------------------------------------------- 作者:翁彦 欢迎转载,请保留此申明信息。 欢迎联系我,enhydra_boy@tom.com ---------------------------------------------------------------------------------------------- 最近,在CSdn论坛上,前后回答了两位位朋友的问题,觉得有必要总结一下。 问题是这样 1 SQL Server 2000是中文版的,想能按照英文方式显示日期格式? 2 SQL Server 2000是中文版的,想能购显示中文月名? 让我们来分析一下,显示日期格式肯定和language有关,而且应该和当前session的language设置有关,肯定和服务器,数据库是否是中英文无关。 那么第一个问题就很简单了, 只需要 set language us_english select convert(varchar(20),getdate(),107) set language 简体中文 结果如下 Changed language setting to us_english. -------------------- Sep 01, 2003 (所影响的行数为 1 行) 已将语言设置改为 简体中文。
但是第二个问题,似乎就不行了,我们可以测试一下 set language 简体中文 select convert(varchar(20),getdate(),107) 得到的却是 09 01,2003 不是需要的九月。 这需要进一步分析了。数据库支持的语言,应该有对应的日期月份简写的设置。 master.dbo.syslanguages就是存放了对应的信息。 可以查看以下syslanguages的结构 我们关心的是是其中的shortmonths和months这两项。 我们看到简体中文这一条,shortmonths,months都是01,02,03,...。 所以无论你怎么设置language,结果都是09 而不会是九月。 解决方法,大家都想到了。对了就是修改系统表。 use master sp_configure 'allow update','1' go reconfigure with override go update dbo.syslanguages set shortmonths='一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月', months='一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月' where name='简体中文' go sp_configure 'allow update','0' go reconfigure with override go
然后重起一下数据库服务器。 然后运行
|