关于SQL6.5到SQL2000的转化问题
各位师兄:
大家好,小弟最近在处理一个将SQL6.5转化为SQL2000的工作。
我发现两者之间的SQL语句好象有点不一样,我没有用过SQL6.5
的存储过程,现在要将它们都转化为SQL2000,不知道会有什么问题吗?
请赐教谢谢。
问题点数:50、回复次数:13Top
1 楼pengdali()回复于 2003-09-01 10:12:58 得分 10
将数据通过DTS转换为ACCESS,然后,先用SQL脚本重新生成数据库,然后再把ACCESS通过DTS转换为SQL Server 2000Top
2 楼newyu1127(825新生)回复于 2003-09-01 10:20:15 得分 0
不是这个意思,比如:
SELECT convert(datetime,convert(binary,convert(int,convert(binary, getdate()))))
这句语句在SQL6.5下的结果是
2003 九月 1 0:00
到了2000下却成为了
1900-01-01 10:18:42.283
如果我要在SQL2000下完成这种功能如何做呢?Top
3 楼liuyun2003(流云(老老实实做人,认认真真还贷))回复于 2003-09-01 10:26:28 得分 0
对6.5不是很熟悉啊。MSSQL是从7开始成熟的。7以前的版本缺陷很多的。Top
4 楼pengdali()回复于 2003-09-01 10:48:34 得分 0
select CONVERT(varchar(10), getDate(),120) --不要时间2002-1-1
select convert(char(8),getdate(),112) ----20020101
select convert(char(8),getdate(),108) ---06:05:05Top
5 楼newyu1127(825新生)回复于 2003-09-01 10:56:48 得分 0
力哥,你的好象无法实现吧。
2003 九月 1 0:00
Top
6 楼newyu1127(825新生)回复于 2003-09-01 11:01:36 得分 0
select datename(year,getdate())+' '+DATENAME(month, getdate())+'月'+' '+
DATENAME(day, getdate())+' '+'0:00'
可以实现
2003 9月 22 0:00
问题就在这个'9月'如何变成'九月'上?
Top
7 楼txlicenhe(马可)回复于 2003-09-01 11:06:54 得分 0
SQL 2000
select convert(varchar,getdate())
Sep 1 2003 10:59AM
Top
8 楼enhydraboy(乱舞的浮尘)回复于 2003-09-01 11:11:32 得分 0
请问楼主
SELECT convert(datetime,convert(binary,convert(int,convert(binary, getdate()))))
要达到的目的是什么??我搞不明白。
Top
9 楼enhydraboy(乱舞的浮尘)回复于 2003-09-01 11:37:47 得分 40
问题就在这个'9月'如何变成'九月'上?
明白了。
这个问题应该这样考虑:
1 首先是由当前 session的language决定的,每种语言对应的日期简写格式是不一样的。可以通过sp_helplanguage检查。
我们关心的是其中的shortmonths和months这两项。
我们看到简体中文这一条,shortmonths,months都是01,02,03,...。所以无论你怎么设置language
都不可能实现。
2 需要改变这一项的内容。就是修改系统表。
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
3 建议重起一下数据库服务器,
然后运行
select convert(varchar(20),getdate(),107)
go
--------------------
九月 01, 2003
select convert(varchar(100),getdate(),9)
go
----------------------------------------------------------------------------------------------------
九月 1 2003 11:36:25:507AMTop
10 楼cerruti1881(与时俱进)回复于 2003-09-01 11:54:09 得分 0
首先安装 Microsoft Age of Empire(I or II)
然后用“僧侣”的 Convert 转换Top
11 楼enhydraboy(乱舞的浮尘)回复于 2003-09-01 11:59:23 得分 0
哈哈,????。
Top
12 楼newyu1127(825新生)回复于 2003-09-01 12:16:20 得分 0
TO enhydraboy(乱舞的浮尘):
谢谢赐教,也就是说在SQL2000里要达到显示2003 九月 1 0:00
的效果除了你说的改系统表的方法外(但是改了系统表后,以后要显示数字的效果又要改回来了是吧),就只有自己写转换函数了。
奇怪是为什么SQL6.5下直接执行下面的语句
SELECT convert(datetime,convert(binary,convert(int,convert(binary, getdate()))))
就可以直接有效果.
到了SQL2000下却变成了
1900-01-01 10:18:42.283
嗨,小弟学SQL也是从SQL7开始学的,用了SQL6.5发现真不习惯.呵呵.
下午上班结帐.
Top
13 楼shaken(shaken)回复于 2003-09-01 13:16:07 得分 0
SELECT convert(datetime,convert(binary,convert(bigint,convert(binary, getdate()))))
这样子就行了!!Top




