数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
SQL Server的syslanguage表应用一例

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

-----------------------------------------------------------------------------------------------

作者:翁彦

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

欢迎联系我,[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

问题解决了。

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

 




相关文章

相关软件