求这样的job或存储过程代码。

showfray 2005-03-21 10:02:14
表里有3个Char型字段,一个叫GZYear,4位存放'2005'代表年;另一个字段叫GZMonth,2位存放'3'或'12'代表月;还有一个字段为GZTime,为smalldatetime型,代表数据生成时间。现在表中有不同的GZYear和不同的GZMonth值区分的数据,分别代表不同的年、月数据。现在想每月的9号自动把上一个月(只是上一个月不是以前所有月)的数据自身追加,假如上个月是12的话那知GzYear+1,并且GzMonth为1,还有把smalldatetime=now()。这样的job或存储过程该如何写?
...全文
106 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
showfray 2005-03-21
  • 打赏
  • 举报
回复
可否有完整的sql?用job如何设定呀?
jinjazz 2005-03-21
  • 打赏
  • 举报
回复
--上个月条件
where GZYear+GZMonth=convert(char(6),dateadd(mm,-1,cast(GZYear+'-'+GZMonth+'-01' as datetime)),112)
jinjazz 2005-03-21
  • 打赏
  • 举报
回复
--建立测试环境
Create Table 表(GZYear char(4),GZMonth char(2))
--插入数据
insert into 表
select '2004','1' union
select '2003','12' union
select '2005','2'
select * from 表
--测试语句
select * from 表 where GZYear+right('0'+rtrim(GZMonth),2)=convert(char(6),dateadd(mm,-1,getdate()),112)
--删除测试环境
Drop Table 表
showfray 2005-03-21
  • 打赏
  • 举报
回复
服务器: 消息 241,级别 16,状态 1,行 1
从字符串转换为 datetime 时发生语法错误。

还是有以上错误。不好意思。
gzyear 为char型4位
gzmonth为char型2位。存放月份格式为3、4、12并非为03、04、12
jinjazz 2005-03-21
  • 打赏
  • 举报
回复
select * from table where GZYear+right('0'+GZMonth,2)=convert(char(6),dateadd(mm,-1,cast(GZYear+right('0'+GZMonth,2)+'01' as datetime)),112)
showfray 2005-03-21
  • 打赏
  • 举报
回复
To:jinjazz(近身剪(N-P攻略
select * from table where GZYear+GZMonth=convert(char(6),dateadd(mm,-1,cast(GZYear+GZMonth+'01' as datetime)),112)

结果:

服务器: 消息 241,级别 16,状态 1,行 1
从字符串转换为 datetime 时发生语法错误。
jinjazz 2005-03-21
  • 打赏
  • 举报
回复
select * from table where GZYear+GZMonth=convert(char(6),dateadd(mm,-1,cast(GZYear+GZMonth+'01' as datetime)),112)
showfray 2005-03-21
  • 打赏
  • 举报
回复
可怜呀,有没有人给予解决呀?支持支持吧,大家。好急呀。~~
showfray 2005-03-21
  • 打赏
  • 举报
回复
select * from table where GZYear+GZMonth=convert(char(6),dateadd(mm,-1,cast(GZYear+'-'+GZMonth+'-01' as datetime)),112)
一条记录都没有的呀?

当前月是3月,表table里存放最近的一个月是2005年2月。为何没有?

27,582

社区成员

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

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