日期:2014-05-18  浏览次数:20353 次

请教关于sql日期处理的问题!!!
数据库 : sql2005

比如一件物品:进货时间1月31号 到期时间8月20

  怎样才能使 当前时间到进货时间 在每次满一个月(准确)时间的时候就提醒用户(输出一条信息)。


  我处理的时候: 直接得到当前时间到进货时间的天数。。。然后用天数/30 
 
  但是这样做是有问题的。。。。。因为每个月天数不一样。


  希望得到更好的解决思路啊!!!1

------解决方案--------------------
select * from tb where day(getdate()) = day(进货时间)
------解决方案--------------------
select * from tb where day(getdate()) = day(进货时间)

select * from tb where datepart(dd,getdate()) = datepart(dd,进货时间)

------解决方案--------------------
用“进货时间 + n个月 = 当前时间” 去判断
比如: dateadd(mm,3,'2012-02-01') = '2012-05-01'
------解决方案--------------------
探讨

select * from tb where day(getdate()) = day(进货时间)

------解决方案--------------------
钻石:
31号进货的,小月岂不是傻了?
------解决方案--------------------
探讨
钻石:
31号进货的,小月岂不是傻了?

------解决方案--------------------
SQL code
select day(dateadd(month, datediff(month,进货时间,getdate()), 进货时间)) = day(getdate())

------解决方案--------------------
select * from tb where day(getdate()) = day(进货时间)
--getdate()得到系统当前日期
--day(getdate())得到当前日期的号数,返回整形
--day(进货时间)得到进货日期的号数,返回整形
select * from tb where datepart(dd,getdate()) = datepart(dd,进货时间)

--datepart(dd,getdate())得到当前日的号数,其中dd表示天,也就是返回号数
后面的同一个道理
------解决方案--------------------
探讨

引用:
SQL code

select day(dateadd(month, datediff(month,进货时间,getdate()), 进货时间)) = day(getdate())


这种方法也不对啊!!
datediff(month,进货时间,getdate()),的时候。。如果是进货时间2012-01-31 而……