首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冷融合与数据库之间的DateTimes传递

冷融合与数据库之间的DateTimes传递
EN

Stack Overflow用户
提问于 2015-03-05 20:26:04
回答 1查看 178关注 0票数 0

我有点搞不懂datetimes是如何在Cold聚变和MSSQL上工作的

我已经构建了一个被遗忘的密码功能,它创建了一个只能在24小时内使用的临时密码。

因此,当用户请求新的临时密码时,我将创建一个新密码并设置请求时间:

代码语言:javascript
复制
<cfset datetime = CREATEODBCDATETIME( Now() ) />

然后我把时间放到数据库里

代码语言:javascript
复制
UPDATE users
SET 
    tempPassword = '#newPassword#'
    tempPasswordCreated = #datetime#
WHERE login = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form.login#">

然后,当用户尝试使用临时密码登录时,我将检查是否已过了不到24小时。

代码语言:javascript
复制
<if checkAccounts.tempPassword eq form.password AND DateDiff("h", checkAccounts.tempPasswordCreated, CREATEODBCDATETIME( Now())) lt 24> 
    <!--- Login Code here--->
</cfif>

然而,

代码语言:javascript
复制
DateDiff("h", checkAccounts.tempPasswordCreated, CREATEODBCDATETIME( Now())) 

在我提交表格的几分钟后就输出了12份。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 21:13:42

下面是一个更简单的版本,应该适用于您:

代码语言:javascript
复制
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#">

=

代码语言:javascript
复制
<cfif checkAccounts.tempPassword eq form.password 
    AND DateDiff("h", checkAccounts.tempPasswordCreated, now()) lt 24> 
    <!--- Login Code here--->
</cfif>

这是假设您正在使用某种日期/时间字段类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28887067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档