收录日期:2020/10/27 22:34:06 时间:2016/07/25 21:21:16 标签:基础类
大家好,
  我现大想写个函数,返回这样的字符串:两位年份+两位今年第几周数+orderinfo表中同一周中记录数。

但是现大这个函数总不行,请帮一下吧。谢谢!

create function dbo.forderid(@currDate datetime) returns varchar
  AS 
begin
  declare @orderid varchar
  declare @currweek int
  declare @curryear varchar
  declare @result varchar
  select @curryear=substring(cast(year(@currDate) as varchar),3,2)
  select @currweek=DATEPART(week,@currDate)
  select @orderid=count(*)+1 from orderinfo where DATEPART(week,@currDate)=DATEPART(week,submittime)
  set @result=cast(@curryear as varchar)+cast(@currweek as varchar)+cast(@orderid as varchar)
  return @result
end
alter function dbo.forderid(@currDate datetime) returns varchar(10)
  AS  
begin
  declare @orderid varchar(10)
  declare @currweek varchar(10)
  declare @curryear varchar(10)
  declare @result varchar(10)
  select @curryear=substring(cast(year(@currDate) as varchar(10)),3,2)
  select @currweek=ltrim(DATEPART(week,@currDate))
  select @orderid=count(*)+1 from orderinfo where DATEPART(week,@currDate)=DATEPART(week,submittime)
  set @result=@curryear+@currweek+cast(@orderid as varchar(10))
  return @result
end


select dbo.forderid(getdate())
varchar 默认是1位
引用 2 楼 bancxc 的回复:
varchar 默认是1位


...
alter function dbo.forderid(@currDate datetime) returns varchar(10)
  AS  
begin
  declare @orderid varchar(10)
  declare @currweek varchar(10)
  declare @curryear varchar(10)
  declare @result varchar(10)
  select @curryear=substring(cast(year(@currDate) as varchar(10)),3,2)
  select @currweek=ltrim(DATEPART(week,@currDate))
  select @orderid=count(*)+1 from orderinfo where DATEPART(week,@currDate)=DATEPART(week,submittime)
  set @result=@curryear+@currweek+right('00000'+cast(@orderid as varchar(10)),6)
  return @result
end


select dbo.forderid(getdate())

---------- 
1031000001

(所影响的行数为 1 行)
非常感谢,但2位同数好像还没满足,请再帮一下了。
引用楼主 jbas 的回复:
大家好,
  我现大想写个函数,返回这样的字符串:两位年份+两位今年第几周数+orderinfo表中同一周中记录数。

但是现大这个函数总不行,请帮一下吧。谢谢!

create function dbo.forderid(@currDate datetime) returns varchar
  AS 
begin
  declare @orderid varchar
  de……

你希望返回的是什么样的值呢?
比如输入 2010-07-25 23:16 
返回值是什么?你得表达清楚,不能只说不能满足需求。
学你的,用
  select @currweek=right('000'+ltrim(DATEPART(week,@currDate)),2)

好像可以。
谢谢!
引用 5 楼 jbas 的回复:
非常感谢,但2位同数好像还没满足,请再帮一下了。


set @result=@curryear+right('0'+@currweek,2)+cast(@orderid as varchar(10))

请问大家一个c语言小白问题 java生成exe程序问题 关于备忘录的编写,写好了子窗口可是不会写入到文件中 dbcc checktable之后的报错解决办法 求助 如何用jquery将table中的一个tr插入另一个tr下面呢 win8系统降级到win7 struts2文件上传清除临时目录的问题 脚本方面的问题 org.apache.catalina.core.StandardWrapperValve invoke 关于scanf函数 急postgres+geoserver+uDig 组播编程:请哪一个大侠,给段代码?一个完整的小软件最好!谢谢! php文字水印编码问题 vs2010 创建进程外com出错 .net 4.0怎么删除数据 使用hibernate3.0对数据库进行反复读写操作报内存溢出? Crystal Report 打印问题 J2SE考试系统,JTree 一个纠结的问题,代码窗口被遮挡了 急急求兼容IE和火狐的网站漂浮物代码!(IE9和IE5、6、7、8解析都不一样的) 像qq一样登录验证怎么写,大侠们帮帮我啊 前台显示字符串如何构建? 问个文件夹同步思路 启动MyEclipse上tomcat无法访问ip,单独启动Tomcat却可以访问IP 今天下班回家的路上,无意间听到一男的对一女的说…… 如何向Jlist里面的元素注册ActionListener 求一个正则表达式 大家来说说 明基逐鹿这个公司怎么样? 新人求助。帮帮忙调出来呀!