1. 用dateadd(),如
select dateadd(day, getdate(), 45)
select dateadd(day, getdate(), 30)2. 用datediff(),如
select datediff(day, '2002-10-10', '2003-3-5')

解决方案 »

  1.   

    1,dateadd(day,12,'1949-01-01') 
    2,datediff3,触发器只能当数据更新时候才能触发,做个存储过程然后定期作业触发吧
      

  2.   

    1. dateadd('d',getdate())
    2.datediff('d','2002-10-10',2003-3-5')
    3.要用计划任务吧。触发器不适合。
    4.
      

  3.   

    先谢谢各位的指点
    大家的热心帮助让小弟再次感动victorycyz 大哥说的计划任务
    是不是就是bamboo说的定期执行的存储过程啊?
      

  4.   

    (1)
     我用GETDATE()得到当前的日期
     现在我想在当前日期的基础上加上45天,或30天,通用的话的是N天  
     想请教各位SQL Server 里面有没有专门的函数啊
     没有的话,怎么解决呢?
      dateadd(day,45,getdate()),  dateadd(day,30,getdate())
    (2)我现在有两个smalldatetime 类型的日期
         比如: '2002-10-10'   '2003-3-5'
         我怎样才能够得到他们之间天数的差值呢?   datediff(day,'2002-10-10','2003-3-5')
     (3)我现有一张表 其中有两个关于时间的字段
        A1 smalldatetime
        A2 smalldatetime
       如果当前日期超过A2的日期
       则自动触发将这条纪录删除
       这个好像是时间触发啊,那位能不能写个触发的例子给小弟瞧一瞧啊
       最好用job你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行
    EXEC sp_add_job @job_name = '作业名字'
    EXEC sp_add_jobstep @job_name = '作业名字',
       @step_name = '步骤名子',
       @subsystem = 'TSQL',
       @command = 'delete 表 where getdate()>A2 ',  --此次写你的删除语句, 
       @retry_attempts = 5, --重试次数
       @retry_interval = 5  --重试间隔EXEC sp_add_jobschedule @job_name = '作业名字', 
       @name = '作业调度名字',
       @freq_type = 4, -- 每天
       @freq_interval = 26, --间隔
       @active_start_time = 10000 --开始时间(4)各位在回答时麻烦写一下是哪道问题,小弟再次感谢大家了
       写好了,不用谢。