哪位大虾能帮忙把下面的VBS函数写成对应SQL的用户自定义函数啊?急求!

xyjnsdcn 2006-09-23 10:46:25
哪位大虾能帮忙把下面的VBS函数写成对应SQL的用户自定义函数啊?急求!
函数1:
function xinxifei(timesec)
if timesec mod 60 then
timemin=(timesec\60)+1
else
timemin=timesec/60
end if

xinxifei=timemin*0.6
end function

函数2:
function tonghuafei(timesec)
if timesec mod 60 then
timemin=timesec\60+1
else
timemin=timesec/60
end if

if timemin<=3 then
tonghuafei=0.2
else
tonghuafei=(timemin-3)*0.1+0.2
end if
end function
...全文
203 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
顺便问一句,楼主如何使用这个函数呢?
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
老是说第一行错误
create function xinxifei(@timesec int)

在查询分析器执行
??

什么错误
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
小虾米:来抢吧!
别介意!
xyjnsdcn 2006-09-23
  • 打赏
  • 举报
回复
2位都不对啊。。。

老是说第一行错误
create function xinxifei(@timesec int)
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
1
create function xinxifei(@timesec int)
returns @xinxifei decimal(18,2)
bgin
declare @timemin int

if ( @timesec % 60) >0
@timemin=cast ((@timesec/60) as int) +1
else
@timemin=@timesec/60

@xinxifei=@timemin*0.6

return

函数2:
create function tonghuafei(@timesec int)
returns @tonghuafei decimal(18,2)
begin
declare @timemin int
if @timesec % 60 >0
@timemin=cast ((@timesec/60) as int) +1
else
@timemin=@timesec/60


if @timemin<=3 then
@tonghuafei=0.2
else
@tonghuafei=(@timemin-3)*0.1+0.2
return
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
if exists( @timesec % 60)
@timemin=cast ((@timesec/60) as int) +1

-->
这里好像没必要,直接《60 =1

哈哈,就跟你一起回答了两个问题啊,另外一个问题我也没得分 ^0^
Well 2006-09-23
  • 打赏
  • 举报
回复
看看联机帮助就可以了,这只是语法问题,问题不是好大,只要知道其语法格式就OK
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
1 --修改后
create function xinxifei(@timesec int)
returns @xinxifei decimal(18,2)
bgin
declare @timemin int

if exists( @timesec % 60)
@timemin=cast ((@timesec/60) as int) +1
else
@timemin=@timesec/60

@xinxifei=@timemin*0.6

end
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
前两个星期是 ximeng 跟我抢,
现在是你 哦 小虾米:


^0^我刷的时候没人 ^0^
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
前两个星期是 ximeng 跟我抢,
现在是你 哦 小虾米:

LZ最好参照一下 连接帮助的 create function 的用法..
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
int-->bigint

楼主可以参照上面的语法稍微改改

不足一分钟按1分钟计算。
可以直接<60就等于1啊
xyxfly 2006-09-23
  • 打赏
  • 举报
回复
numeric(10,1)
--》numeric(10,2)

@timesec>60 --》 @timesec<60
xyxfly 2006-09-23
  • 打赏
  • 举报
回复

create function xinxifei(@timesec int)
returns numeric(10,1)
as
begin
declare @sec int,
@timemin int,
@xinxifei numeric(10,1)
set @sec=@timesec
if @timesec>60 --这里不知道mod是什么意思
set @timemin=(@timesec/60)+1
else
set @timemin=@timesec/60
set @xinxifei=@timemin*0.6
return @xinxifei
end
go
select dbo.xinxifei(100)
go
drop function xinxifei
xyjnsdcn 2006-09-23
  • 打赏
  • 举报
回复
timemin=timesec\60+1
整除后+1

就是一个时间的换算。秒->分钟,不足一分钟按1分钟计算。
xyjnsdcn 2006-09-23
  • 打赏
  • 举报
回复
不好意思,忘了说明一下,timesec和timemin是长整型,xinxifei是有2位小数的.
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
timemin=timesec\60+1
这句是什么意思?
xiaoku 2006-09-23
  • 打赏
  • 举报
回复
1
create function xinxifei(@timesec int)
returns @xinxifei decimal(18,2)
bgin
declare @timemin decimal(18,2)

if exists( @timesec mod 60)
@timemin=(@timesec/60)+1
else
@timemin=@timesec/60

@xinxifei=@timemin*0.6

end

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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