计算上次登录和当前日期之间的天数

时间:2013-04-29 09:50:05

标签: date coldfusion cfml

登录到他们的帐户后,每个用户都将他们的登录日期和时间存储到数据库中。然而,我想要做的是计算天数(或者最好在超过一个月的情况下转换成月数),这样如果用户查看他们的个人资料,他们就可以看到乐队的活跃程度。此外,这可以使我在保持活动配置文件成为网站内容议程的首要位置方面受益,这样它就不会因非活动用户内容填满主页内容而变得陈旧。

我正在使用ColdFusion,所以我正在寻找一种方法来查找例如#lastLogin#来自#now()#的天数{{1}}。因此,如果上次登录的日期是23/04/2013,今天的日期是29/04/2013,则会显示“Last Active,1天前”。但是,如果最后一次登录是23/03/2013,则会显示“Last Active,1个月前”。

有人知道怎么做吗?感谢。

P.S我目前没有测试此代码,因为我不知道从哪里开始实现这一目标。

3 个答案:

答案 0 :(得分:8)

使用DateDiff

<cfset days = dateDiff("d", LoginDateVariable, now()) />

就这么简单。

答案 1 :(得分:2)

  

P.S我目前没有测试这个代码,因为我不知道在哪里   从实现这一目标开始。

这不能回答您的直接问题,但为了帮助您了解从何处入手,我强烈建议您查看可用的内置ColdFusion功能和标记。

此外,Google搜索通常会将您置于文档中,只需在搜索字符串中添加“coldfusion”即可。在Google上搜索coldfusion date functions会产生非常有用的答案,其中第一个是所有ColdFusion date functions的列表。

答案 2 :(得分:0)

戴尔的回答很明显。但我还建议将其作为变量返回给您的查询。让SQL服务器完成工作。这些类型的计算非常有效。不是CF也不能做得好。但是,SQL可能更适合这样做。特别是如果您已经返回lastLogin日期。

它类似于CF解决方案:

SELECT ...., lastLogin, DATEDIFF(d, lastLogin, GETDATE()) AS LastLoginDays 
FROM ....
WHERE ....

这会给你天数。如果你想按月/日分解它,你必须决定如何定义一个月。这会变得有点复杂。您可以编写一个可以在两个日期运行的SQL函数,并为您提供自上次登录以来的准确天数/月/年。

要记住的另一件事是:生成日期的位置在哪里?当您将loginDate插入数据库时​​,您是在插入它之前在CF中执行now()还是在插入时在SQL中执行getDate()?同样,我会让数据库执行您的日期逻辑,但您想要比较同一来源的两个日期。例如,如果您的loginDate是数据库getDate(),那么您可能不希望将其与CF now()进行比较。一个是SQL服务器的日期时间,另一个是CF服务器的日期时间。他们可能会有所不同。