关于日期字段的处理,难度不一般.
现有一要求,将表jiaoyi中的日期字段saletime的值进行处理,将这个值给另一个日期字段repairtime,原则就是saletime(销售日期)加上一年为repairtime(保修截止日期),但是要在这个基础上少一天,比如销售日期是2002-9-6,则该记录的repairtime的值就为2003-9-5,但是我们还要考虑到这样的情况,比如销售日期是2005-5-1,那么保修截止日期就是2006-4-30了,所以处理起来非常复杂,考虑到这么多因素,该如何实现这个日期处理?原来只加一年的情况下,有朋友用下边的方法实现了:
<%
function reChange(idate)
dim s
s=split(idate, "- ")
reChange=(clng(s(0))+1)& "- "&s(1)& "- "&s(2)
end function
%>
<%
Dim Sql,Rs,repairtime
Set Rs=Server.CreateObject( "ADODB.RecordSet ")
Sql= "Select * From [jiaoyi] Order By Id Desc "
Rs.Open Sql,Connshouhou,1,3
While Not Rs.Eof
repairtime=reChange(Rs( "saletime "))
Rs( "repairtime ")=repairtime
Rs.Update
Rs.MoveNext
Wend
Rs.Close:Set Rs=Nothing
response.redirect "/index.htm "
%>
现在不知道该如何处理?
------解决方案--------------------参考datediff函数!
------解决方案--------------------d1 = dateadd( "yyyy ", 1, "2002-5-1 ")
d2 = dateadd( "d ", -1, d1)
就可以了
function reChange(idate)
dim d1, d2
d1 = dateadd( "yyyy ", 1, CDate(idate))
d2 = dateadd( "d ", -1, d1)
reChange=d2
end function
------解决方案--------------------datediff
------解决方案--------------------参考hookee() 的方法!
------解决方案--------------------repairtime=dateadd(year,1,saletime)
repairtime=Dateadd(day,-1,repairtime)
eg: update Tb_Test Set repairTime=DateAdd(day,-1,dateadd(year,1,saletime))
寫個存儲過程自動更新就行了,計算如上.