我使用DateDiff函式

2021-04-18 03:13:52 字數 4631 閱讀 9023

最近做的**專案,多使用者,

要求發文章的時候有積分獎勵,

修改文章時也有相同獎勵。但要求每天修改同乙個文章只能獎勵一次,不管修改多少次。

我用資料庫儲存過程來實現此功能

判斷當前時間與其最晚修改時間是否相差一天以上,是的話可以加分,反之不加

用到乙個函式:datediff("d", 時間1,時間2)

函式介紹:

返回variant(long) 的值,表示兩個指定日期間的時間間隔數目。

語法

datediff(interval, date1, date2

[, firstdayofweek[,firstweekofyear]])

datediff函式語法中有下列命名引數:

部分描述

interval

必要。字串表示式,表示用來計算date1date2的時間差的時間間隔

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

是否為星期日,都不將它算進去。

如果date1date2來得晚,則datediff函式的返回值為負數。

firstdayofweek引數會影響使用時間間隔符號 「w」 或 「ww」 計算的結果。

如果 date1

或 date2

是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1

或 date2

用雙引號 (" ") 括起來,且年份略而不提,則在每次計算表示式 date1

或 date2

時,當前年份都會插入到**之中。這樣就可以書寫適用於不同年份的程式**。

在計算 12 月 31 日和來年的 1 月 1 日的年份差時,datediff返回 1 表示相差乙個年份,雖然實際上只相差一天而已。

本示例使用datediff函式來顯示某個日期與今日相差幾天。

dim thedate as date   '宣告變數。dim msgthedate = 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 datetime

select @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...