gpt4 book ai didi

mysql - ColdFusion DateDiff - 有更好的方法吗?

转载 作者:行者123 更新时间:2023-11-29 02:55:39 24 4
gpt4 key购买 nike

我只是想结合我团队中不同成员的总服务年限。下面的脚本工作正常,但是,每个成员的雇用日期不会从数据库中提取。这意味着我必须对每个人的 hiredate 进行硬编码,然后对他们进行 DateDiff。拥有 28 名成员的团队会导致代码管理噩梦。

我的主要目标是使代码更简单、更高效,尤其是在管理 28 名团队成员时。如果路径的一部分需要将用户的hiredate添加到数据库中;我能做到。我只是看到下面的代码需要重写,我只是不知道最好的方法。

有没有更好的方法?

<cfscript>
REQUEST.rightnow = Now();
dateBob = DateDiff("yyyy", "1996 02 01", REQUEST.rightnow);
dateSam = DateDiff("yyyy", "1996 08 01", REQUEST.rightnow);
dateJoe = DateDiff("yyyy", "2004 12 01", REQUEST.rightnow);
dateJohn = DateDiff("yyyy", "2001 01 01", REQUEST.rightnow);
combinedDate = (dateBob + dateSam + dateJoe + dateJohn);
</cfscript>
<cfoutput>
#combinedDate# total years<br>
#dateBob# years<br>
#dateSam# years<br>
#dateJoe# years<br>
#dateJohn# years<br>
</cfoutput>

--- 编辑 ---

按照 Matt 的建议作为数据库查询;是这样的吗?

SELECT hire_date,
ROUND((DATEDIFF(NOW(),hire_date)) / 365) AS dateDiff
FROM members
WHERE hire_date IS NOT NULL

--- 编辑 2 ---

我刚刚意识到我忘记添加所有“dateDiff”的 SUM()。我想,如果有人使用此 SQL,您将不得不将其交给 ColdFusion。除非我忽略了一种在 SQL 中执行此操作的方法?

--- 编辑 3 ---

Per Leigh 的鼓励评论;我找到了更好的方法。 TIMESTAMPDIFF() MySQL 函数添加了一个unit 变量,它可以是日、月、年等。这允许我删除/365 和 ROUND()。这反过来又允许我使用 SUM() 而不会从 MySQL 得到语法错误。我还将我的别名从 dateDiff 重命名为 Dif,因为我想避免与 DATEDIFF() 混淆。

见下文。 :D

SELECT hire_date,
SUM(TIMESTAMPDIFF(YEAR,hire_date,NOW())) AS Dif
FROM members
WHERE hire_date IS NOT NULL

最佳答案

改进为 ColdFusion 发布的代码的解决方案实际上是替换它。通过将每个成员的 hire_dates 添加到现有的 MySQL 数据库并编写下面的查询;我不再需要原始帖子中的所有 ColdFusion 代码。

SELECT SUM(TIMESTAMPDIFF(YEAR,hire_date,NOW())) AS Dif
FROM members
WHERE hire_date IS NOT NULL

关于mysql - ColdFusion DateDiff - 有更好的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30877354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com