从当月开始计算年龄

Calculate Age from the start of the current Month

我有以下代码可以根据今天的日期计算一个人的出生日期,效果很好

    SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, 
ROUND(DATEDIFF(NOW(), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC 

然而,我被要求从当月 1 日开始计算他们的年龄,并且我已经尝试

SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS CURMONTH, 
ROUND(DATEDIFF(CURMONTH(), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC

但是我收到以下错误:调用本机函数时参数计数不正确 'DATEDIFF'

你不应该使用 CURMONTH()。而是将今天的日期格式化为本月的第一天。

使用以下查询:

SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS CURMONTH, 
ROUND(DATEDIFF(DATE_FORMAT(NOW() ,'%Y-%m-01'), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC

您正在使用: DATEDIFF(CURMONTH(), applicationDoB)

在你的代码中。但是 CURMONTH() 只给你当前日期的月份,而 applicationDoB 给你一个完整的日期。您还需要用对应于完整日期(当月的第一天)的表达式替换 CURMONTH()。