首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 取当前日期报错 [已结贴,结贴人:comeonon]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:37:29 楼主
    select getdate()as ymddate,a.userid,b.balance,c.prefvalue,b.balance/c.prefvalue
    from DB_Maket.dbo.Dim_Users a,DB_Source.dbo.userfund b,DB_Source.dbo.userpref c
    where a.userid=b.userid and b.userid=c.userid


    取当前日期为何会报错呢 报错如下:将数据类型 varchar 转换为 numeric 时出错。 请问高手 哪里有问题
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:39:421楼 得分:3
    select getdate() as ymddate

    应该其它字段    b.balance    c.prefvalue
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:40:022楼 得分:2
    不是日期的错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:41:193楼 得分:2
    b.balance,c.prefvalue
    这两个有一上是VARCHAR型的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:42:374楼 得分:3
    SQL code
    select getdate()as ymddate,a.userid,b.balance,c.prefvalue,cast(b.balance as float)/cast(c.prefvalue as float) from DB_Maket.dbo.Dim_Users a,DB_Source.dbo.userfund b,DB_Source.dbo.userpref c where a.userid=b.userid and b.userid=c.userid
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:43:155楼 得分:2
    取日期没有错,
    应该是 b.balance/c.prefvalue 其中一个字段是字符型
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:52:296楼 得分:2
    b.balance/c.prefvalue
    很明显嘛
    就是这两个当中一个为varchar类型的,而且很有可能b.balance是varchar类型的

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 10:57:387楼 得分:2
    varchar不能进行运算,将varchar类型换成numeric就行了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 11:13:538楼 得分:0
    中间某个类型不能转换,应该不是日期的错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojuju10
    • 等级:
    发表于:2008-05-16 11:16:009楼 得分:2


    不是getdate()的问题,应该是b.balance/c.prefvalue 的问题


    应该改为

    (case when isnumeric(b.balance)=1 then b.balance else 1 end)/
    (case when isnumeric(c.prefvalue)=1 then c.prefvalue else 1 end)


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 11:18:3710楼 得分:2
    肯定不是GETDATE()的错
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-16 11:23:0811楼 得分:0
    使用cast或者convert强转一下数据类型
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved