高分请教一个作业的写法 100anuanu]

发布时间:2017-2-24 21:03:02 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"高分请教一个作业的写法 100anuanu]",主要涉及到高分请教一个作业的写法 100anuanu]方面的内容,对于高分请教一个作业的写法 100anuanu]感兴趣的同学可以参考一下。

表a(id,trs_time) 如果表中的top trs_time减low trs_time>10天的话 删除表中5天之前的记录

if (select datediff(day,min(trs_time),max(trs_time))) from tb)>10   delete a   where trs_time<=dateadd(day,-5,getdate())

引用 1 楼 csdyyr 的回复:SQL codeif(selectdatediff(day,min(trs_time),max(trs_time)))fromtb)>10deleteawheretrs_time<=dateadd(day,-5,getdate()) if (select datediff(day,min(trs_time),max(trs_time)) from tb)>10   delete a   where trs_time<=dateadd(day,-5,getdate())

--在作业里写上。 if datediff(dd,(select min(trs_time) from ta) ,(select max(trs_time) from ta))>10  delete ta where datediff(dd,trs_time,getdate())>5 --作业参见。 http://blog.csdn.net/sdhdy/archive/2009/04/26/4126359.aspx

--是不是这样? select * from 表a where datediff(dd,low trs_time>10,top trs_time)<1

引用 4 楼 fredrickhu 的回复:SQL code--是不是这样? select * from 表a where datediff(dd,low trs_time>10,top trs_time)<1 晕  改下: select * from 表a where datediff(dd,low trs_time>10,top trs_time)>10 delete ta where datediff(dd,trs_time,getdate())>5

引用 5 楼 fredrickhu 的回复:引用 4 楼 fredrickhu 的回复: SQL code--是不是这样?  select * from 表a where datediff(dd,low trs_time>10,top trs_time) <1    晕  改下:  SQL codeselect * from 表a where datediff(dd,low trs_time>10,top trs_time)>10 delete ta where datediff(dd,trs_time,getdate())>5 ..SQL codeselect * from 表a where datediff(dd,low trs_time,top trs_time)>10 delete ta where datediff(dd,trs_time,getdate())>5

谢谢大家 再问一句 datediff中的第一个参数有day,有dd, 这两个参数具体指的是什么(day指天数)

引用 7 楼 anuanu 的回复:谢谢大家  再问一句  datediff中的第一个参数有day,有dd,  这两个参数具体指的是什么(day指天数) day 与 dd 一样,都是天数。

引用 7 楼 anuanu 的回复:谢谢大家  再问一句  datediff中的第一个参数有day,有dd,  这两个参数具体指的是什么(day指天数) Day ,dd, d 都可以,指的是天数。

楼主,可以再参考一下这个: DATEDIFF 返回跨两个指定日期的日期和时间边界数。  语法 DATEDIFF ( datepart , startdate , enddate )  参数 datepart 是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。 日期部分 缩写  year yy, yyyy  quarter qq, q  Month mm, m  dayofyear dy, y  Day dd, d  Week wk, ww  Hour hh  minute mi, n  second ss, s  millisecond ms  startdate 是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。  因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。 如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。 有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。  enddate 是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。 返回类型 integer 注释 startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。 当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。 计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。 示例 此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。 USE pubs GO SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles GO 请参见

楼主抽空可以看看SQL的联机帮助。 datediff  这个例子中用到。 datepart dateadd 等等。 功能还是很强大的。

完整的JOB代码,你执行就可以了 USE [msdb] GO /****** Object:  Job [Job_Delete]    Script Date: 05/25/2009 19:59:53 ******/ BEGIN TRANSACTION DECLARE @ReturnCode INT SELECT @ReturnCode = 0 /****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 05/25/2009 19:59:53 ******/ IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1) BEGIN EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback END DECLARE @jobId BINARY(16) EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Job_Delete',  @enabled=1,  @notify_level_eventlog=0,  @notify_level_email=0,  @notify_level_netsend=0,  @notify_level_page=0,  @delete_level=0,  @description=N'No description available.',  @category_name=N'[Uncategorized (Local)]',  @owner_login_name=N'sa', @job_id = @jobId OUTPUT IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback /****** Object:  Step [Step1]    Script Date: 05/25/2009 19:59:54 ******/ EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @[email protected], @step_name=N'Step1',  @step_id=1,  @cmdexec_success_code=0,  @on_success_action=1,  @on_success_step_id=0,  @on_fail_action=2,  @on_fail_step_id=0,  @retry_attempts=0,  @retry_interval=0,  @os_run_priority=0, @subsystem=N'TSQL',  @command=N'if (select datediff(day,min(trs_time),max(trs_time))) from tb)>10 Begin   delete from tb   where trs_time<=dateadd(day,-5,getdate()) End',  @database_name=N'DBName', ---换你自己的DB的名字 @flags=0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @[email protected], @name=N'1',  @enabled=1,  @freq_type=4,  @freq_interval=1,  @freq_subday_type=1,  @freq_subday_interval=0,  @freq_relative_interval=0,  @freq_recurrence_factor=0,  @active_start_date=20090525,  @active_end_date=99991231,  @active_start_time=0,  @active_end_time=235959 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)' IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback COMMIT TRANSACTION GOTO EndSave QuitWithRollback: IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave:

学习了

谢谢大家

上一篇:[推荐] 一个表一天百分条数据,如何提高查询? 100you_tube]
下一篇:【急】SQL2008镜像创建问题 20fredrickhu]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。