最近做的**專案,多使用者,
要求發文章的時候有積分獎勵,
修改文章時也有相同獎勵。但要求每天修改同乙個文章只能獎勵一次,不管修改多少次。
我用資料庫儲存過程來實現此功能
判斷當前時間與其最晚修改時間是否相差一天以上,是的話可以加分,反之不加
用到乙個函式:datediff("d", 時間1,時間2)
函式介紹:
返回variant(long) 的值,表示兩個指定日期間的時間間隔數目。
語法
datediff(interval, date1, date2
[, firstdayofweek[,firstweekofyear]])
datediff函式語法中有下列命名引數:
部分描述
interval
必要。字串表示式,表示用來計算date1和date2的時間差的時間間隔
date1□date2
必要;variant(date)。計算中要用到的兩個日期。
firstdayofweek
可選。指定乙個星期的第一天的常數。如果未予指定,則以星期日為第一天。
firstweekofyear
可選。指定一年的第一周的常數。如果未予指定,則以包含 1 月 1 日的星期為第一周。
設定
interval
引數的設定值如下:
設定描述
yyyy年q
季m月y
一年的日數d日
w一周的日數ww周
h時n分鐘
s秒firstdayofweek引數的設定值如下:
常數值描述
vbusesystem0
使用 nls api 設定。
vbsunday1
星期日(預設值)
vbmonday2
星期一vbtuesday3
星期二vbwednesday4
星期三vbthursday5
星期四vbfriday6
星期五vbsaturday7
星期六
常數值描述
vbusesystem0
用 nls api 設定。
vbfirstjan11
從包含 1 月 1 日的星期開始(預設值)。
vbfirstfourdays2
從第乙個其大半個星期在新的一年的一周開始。
vbfirstfullweek3
從第乙個無跨年度的星期開始。
說明
datediff函式可用來決定兩個日期之間所指定的時間間隔數目。例如,可以使用datediff來計算兩個日期之間相隔幾日,或計算從今天起到年底還有多少個星期。
為了計算date1
與date2
相差的日數,可以使用「一年的日數」(y) 或「日」(d)。當interval
是「一周的日數」(w) 時,datediff返回兩日期間的週數。如果date1
是星期一,datediff計算到date2
為止的星期一的個數。這個數包含date2
但不包含date1
。不過,如果interval
是「周」(ww),則datediff函式返回兩日期間的「日曆周」數。由計算date1
與date2
之間星期日的個數而得。如果date2
剛好是星期日,則date2
也會被加進datediff的計數結果中;但不論date1
是否為星期日,都不將它算進去。
如果date1比date2來得晚,則datediff函式的返回值為負數。
firstdayofweek引數會影響使用時間間隔符號 「w」 或 「ww」 計算的結果。
如果 date1
或 date2
是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1
或 date2
用雙引號 (" ") 括起來,且年份略而不提,則在每次計算表示式 date1
或 date2
時,當前年份都會插入到**之中。這樣就可以書寫適用於不同年份的程式**。
在計算 12 月 31 日和來年的 1 月 1 日的年份差時,datediff返回 1 表示相差乙個年份,雖然實際上只相差一天而已。
本示例使用datediff函式來顯示某個日期與今日相差幾天。
dim thedate as date '
宣告變數。dim msg
thedate = inputbox("enter a date")
msg = "days from today: " & datediff("d", now, thedate)
msgbox msg
一引數,在物件庫中預先定義了其名稱。對每個引數,不必拘泥於語法所規定的特定順序來提供值,而是只需按任何順序用命名引數分配值。例如,假設一方法接受了三個引數:
dosomethingnamedarg1, namedarg2, namedarg3
在對命名引數賦值時,可使用以下語句:
dosomething namedarg3 := 4, namedarg2 := 5, namedarg1 := 20
注意,命名的引數不必按語法中安排的正規順序出現。
任何其值為一連串字元的表示式。字串表示式的元素可包含返回字串的函式、字串文字、字串常數、字串變數、字串variant或返回字串variant(vartype8) 的函式。
任何其值為一連串字元的表示式。字串表示式的元素可包含返回字串的函式、字串文字、字串常數、字串變數、字串variant或返回字串variant(vartype8) 的函式。
傳遞給乙個過程的常數、變數或表示式。
由數字符號 (#) 所包圍的具有有效格式的字串行。有效的格式包括區域設定中指定的日期格式或國際日期格式。
例如,#12/31/92#
表示 1992 年 12 月 31 日,這裡,應用程式的區域設定為 english-u.s.。使用日期文字可增加語言上的可移植性。
declare @lastedtime datetimeselect @lastedtime=[edittime] from table where 字段='value'
declare @day int
set @day=datediff("d", @lastedtime,getdate())
if(@day>=1)
begin
update table1 set usermark=usermark+5 where username=@username /*積分+5*此處可置多行**/
end
日期函式 datediff
命令格式 datediff datetime1,datetime2,datepart 用途 計算兩個時間的差值,並轉換成指定的單位,如 秒。引數說明 datetime1 datetime2 datetime型別,被減數和減數,若輸入為string型別會隱式轉換為datetime型別後參與運算,其它型...
DateDiff 函式詳解
描述 返回兩個日期之間的時間間隔。語法datediff interval,date1,date2 firstdayofweek firstweekofyear datediff 函式的語法有以下引數 interval 必選。字串表示式,表示用於計算 date1 和 date2 之間的時間間隔。有關數...
使用DATEDIFF函式計算時間差
返回跨兩個指定日期的日期和時間邊界數。語法datediff datepart startdate enddate 引數datepart 是規定了應在日期的哪一部分計算差額的引數。下表列出了 microsoft sql server 識別的日期部分和縮寫。日期部分 縮寫 year yy,yyyy qu...