1

我正在尝试在 mysql 中实现一个基于计算返回年龄的过程。输入出生日期 (DATE),然后完成计算。应该相对简单,但我似乎无法让它发挥作用。我不确定这是否适合“选择语句”,如果这非常简单,我深表歉意,但这是我第一次运行程序。

如果有人可以告诉我我做错了什么,将不胜感激。

谢谢!

PS 我有一个名为“PERSON”的表,其中包含字段“age”(int),在调用存储过程之前该字段当前为空。

DELIMITER $$
CREATE PROCEDURE determineAge(IN birthDate DATE)
BEGIN
DECLARE today TIMESTAMP; 
SELECT DATEDIFF(today,birthdate)/365 AS ageInYears
FROM PERSON;
END $$
DELIMITER ;

call determineAge('June 25, 1981');
4

1 回答 1

2

这行得通。无需声明“今天” - 只需NOW()在查询中使用一个函数。

此外,无需选择FROM任何东西......您只是查询一个值。

您的日期格式错误(MySQL 需要'YYYY-MM-DD',并且您希望将差值计算为整数年。

DELIMITER $$
CREATE PROCEDURE determineAge(IN birthDate DATE)
BEGIN
    SELECT FLOOR(DATEDIFF(NOW(), DATE(birthdate))/365);
END $$
DELIMITER ;

CALL determineAge('1981-06-25');

最后,如果您愿意,理论上可以将年份值作为OUT参数返回,尽管查询结果很好。

DELIMITER $$
CREATE PROCEDURE determineAge(IN birthDate DATE, OUT age INT)
BEGIN
    SELECT FLOOR(DATEDIFF(NOW(), DATE(birthdate))/365) INTO age;
END $$
DELIMITER ;

给你!

于 2012-12-05T01:34:05.773 回答