类型隐式转换错误,高手请进!

nethermit99 2004-12-02 10:13:24
存储过程中有参数为datetime,我在query analyzer中调试时,传入字符串如'12/01/2004'或'2004-12-01'都产生shaping 错误。
屏蔽掉该参数后,断点跟踪,发现某语句也进行字符串至datatime的类型转换,又出现同样错误。

我的sql server 为 sql2000 chs sp3 ,Collation 为Latin1_General_CS_AS。


小弟顿首泣拜!
...全文
143 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nethermit99 2004-12-05
  • 打赏
  • 举报
回复
我得操作系统是windows2003 chs
所装得产品是中文版的
nethermit99 2004-12-04
  • 打赏
  • 举报
回复
declare @dt datetime
declare @st varchar(100)

set @st = '12-31-04' --注意,系统会解释成2012年-31月,所以出错。
set @dt = @st
select @dt

出错!系统(Control Panel)中短日期12/4/2004,长日期为Saturday, December 04, 2004。

不知如何解决?
nethermit99 2004-12-04
  • 打赏
  • 举报
回复
唉,各位老大帮帮忙啊。
不想重装机器
nethermit99 2004-12-04
  • 打赏
  • 举报
回复
有道理,但是那个存储过程是公司的产品里的,别人都没这个问题。
我修改过 regional setting ,但是似乎没有用 啊


vinsonshen 2004-12-04
  • 打赏
  • 举报
回复
表示“年”的才2位,当然不行啦~~~
jiang130 2004-12-03
  • 打赏
  • 举报
回复
可以用字符串型的參數試一下,你的參數值是多少?
vinsonshen 2004-12-03
  • 打赏
  • 举报
回复
你在查询分析上测试下以下会不会出错先:
select datediff(day,'12/01/2004',getdate())

select datediff(day,'2004-12-01',getdate())

如果没有的话,那你得好好检查下你的过程啦~~~
要不把你的过程贴出来帮你看看~`
TigerSuper 2004-12-03
  • 打赏
  • 举报
回复
UP
lh1979 2004-12-02
  • 打赏
  • 举报
回复
将字符串转换成日期类型看看
lsxaa 2004-12-02
  • 打赏
  • 举报
回复
存储过程里转换一下
convert(datetime,'2004-12-01')
nethermit99 2004-12-02
  • 打赏
  • 举报
回复
多谢,但是没用。当传入参数为字符串的时候,隐式转换成datetime类型失败。我认为很可能是数据库设置有问题,但不知道怎样修改。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧