• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SQL Server的syslanguage表应用一例_sqlserver

sqlserver 搞代码 3年前 (2018-06-17) 213次浏览 已收录 0个评论

———————————————————————————————–

作者:翁彦

欢迎转载,请保留此申明信息。

http://www.gaodaima.com/?p=37400SQL Server的syslanguage表应用一例_sqlserver

欢迎联系我,[email protected]

———————————————————————————————-

最近,在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

然后重起一下数据库服务器。

然后运行
select convert(varchar(20),getdate(),107)
go

——————–
九月 01, 2003

select convert(varchar(100),getdate(),9)
go
—————————————————————————————————-
九月  1 2003 11:36:25:507AM

问题解决了。

看来,很多问题需要仔细的想一下,分析一下,看看文档,自己手工实践一下,都能迎刃而解。

 

欢迎大家阅读《SQL Server的syslanguage表应用一例_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址