我使用DateDiff函数

最近做的网站项目,多用户,

要求发文章的时候有积分奖励,

修改文章时也有相同奖励。但要求每天修改同一个文章只能奖励一次,不管修改多少次。

我用数据库存储过程来实现此功能

在修改文章的存储过程中:

判断当前时间与其最晚修改时间是否相差一天以上,是的话可以加分,反之不加

用到一个函数: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 是否为星期日,都不将它算进去。

如果 date1 date2 来得晚,则 DateDiff 函数的返回值为负数。

firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

如果 date1 date2 日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。


 

DateDiff 函数示例

本示例使用 DateDiff 函数来显示某个日期与今日相差几天。

Dim TheDate As Date   ' 声明变量。
Dim Msg
TheDate = InputBox("Enter a date")
Msg = "Days from today: " & DateDiff("d", Now, TheDate)
MsgBox Msg

 

相关基础知识:

 

命名参数

一参数,在对象库中预先定义了其名称。对每个参数,不必拘泥于语法所规定的特定顺序来提供值,而是只需按任何顺序用命名参数分配值。例如,假设一方法接受了三个参数:

DoSomeThing namedarg1, namedarg2, namedarg3

在对命名参数赋值时,可使用以下语句:

DoSomeThing namedarg3 := 4, namedarg2 := 5, namedarg1 := 20

注意,命名的参数不必按语法中安排的正规顺序出现。

 

字符串表达式

任何其值为一连串字符的表达式。字符串表达式的元素可包含返回字符串的函数、字符串文字、字符串常数、字符串变量、字符串 Variant 或返回字符串 Variant (VarType 8) 的函数。

 

字符串表达式

任何其值为一连串字符的表达式。字符串表达式的元素可包含返回字符串的函数、字符串文字、字符串常数、字符串变量、字符串 Variant 或返回字符串 Variant (VarType 8) 的函数。

 

参数

传递给一个过程的常数、变量或表达式。

 

日期文字

由数字符号 (#) 所包围的具有有效格式的字符序列。有效的格式包括区域设置中指定的日期格式或国际日期格式。

例如, #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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值