T-SQL 获取时间并判断的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:02:28
CREATE Proc dbo.logincheck
@uid int,
@psw char(32),
@lasttime datatime,
@loginss smallint output
as
declare @strPwd char(32)
begin
select @strPwd=[userdata],@lasttime=[lasttime] from dbo.[Csw_users] where [uid]=@loginuid

if @psw = @strPwd
set @loginss = 0
else
set @loginss = 1
end
GO

以上是一个判断用户是否登录的存储过程,@lasttime 是取得该用户最后的登录时间

现在我想增加一个功能:判断用户最后登录时间是否为今天,如果不是今天 则用户积分加10“jifen=jifen+10”,请问用存储过程怎么实现?

你的积分这字段就在Csw_users表中吧?如果在就加一个update语句。
但首先要明确你所使用数据,以便使用相应的函数获取当前的系统时间(各数据库所用函数略有区别),然后用系统日期与最后登录的日期比对(两者格式必须一致,各数据库都有相应转换函数),比对结果为false是就可进行你需要的update动作。 下面以sql server2000写点,手上没环境,有的关键字不知道对不对呢。呵

update Csw_user set jifen=jifen+10 where convert(varchar(10),lasttime,111)<>convert(varchar(10),getdate(),111)

就你这个需求不用什么存储过程吧?就上面你存储过程中的输入参数lasttime,也是沉余的,不要为用存储过程而用存储过程。呵可

设定时间变量@current_date
set @current_date=gate_date()
然后进行比对就可以了。不相等就可以进行下面的+10操作,否则就不加

再加个
update Csw_user set jifen=jifen+10
where convert(nvarchar(10),@lasttime,120)<>convert(nvarchar(10),getdate(),120)

试一下