我有点搞不懂datetimes是如何在Cold聚变和MSSQL上工作的
我已经构建了一个被遗忘的密码功能,它创建了一个只能在24小时内使用的临时密码。
因此,当用户请求新的临时密码时,我将创建一个新密码并设置请求时间:
<cfset datetime = CREATEODBCDATETIME( Now() ) />然后我把时间放到数据库里
UPDATE users
SET
tempPassword = '#newPassword#'
tempPasswordCreated = #datetime#
WHERE login = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.login#">然后,当用户尝试使用临时密码登录时,我将检查是否已过了不到24小时。
<if checkAccounts.tempPassword eq form.password AND DateDiff("h", checkAccounts.tempPasswordCreated, CREATEODBCDATETIME( Now())) lt 24>
<!--- Login Code here--->
</cfif>然而,
DateDiff("h", checkAccounts.tempPasswordCreated, CREATEODBCDATETIME( Now())) 在我提交表格的几分钟后就输出了12份。
发布于 2015-03-05 21:13:42
下面是一个更简单的版本,应该适用于您:
UPDATE users
SET
tempPassword = <cfqueryparam value="#newPassword#" cfsqltype="cf_sql_varchar">
, tempPasswordCreated = <cfqueryparam value="#now()#" cfsqltype="cf_sql_timestamp">
WHERE login = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.login#">=
<cfif checkAccounts.tempPassword eq form.password
AND DateDiff("h", checkAccounts.tempPasswordCreated, now()) lt 24>
<!--- Login Code here--->
</cfif>这是假设您正在使用某种日期/时间字段类型。
https://stackoverflow.com/questions/28887067
复制相似问题