我有一个学生数据库,其中有一个“注册日期”列。我需要在sql上运行查询,以便查询该日期和今天的日期,并以yy年mm月份显示差异。
我正在使用TIMESTAMPDIFF来计算出这些日期之间的差,但只能产生一个值,如何调整它以解决整个行呢?我需要使用此数据创建一个新列。
这是查询:
SELECT TIMESTAMPDIFF(MONTH, CURDATE(), (SELECT time_enrolled FROM student) )
AS newDate
如果我在末尾添加“ where”语句,则会得到指定的ID,例如:
SELECT TIMESTAMPDIFF(MONTH, CURDATE(), (SELECT time_enrolled FROM student WHERE f_id = 4) )
AS newDate
最佳答案
不要使用子查询。您的原始查询应为:
SELECT TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled) AS newDate
FROM student;
如果子查询在标量上下文中返回多个行(例如,在
select
语句中返回值),则会生成错误。如果愿意,可以在此查询中添加适当的
where
子句。编辑:
要获得年份和月份,请使用模运算:
SELECT floor(TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled) / 12) as years,
mod(TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled), 12) as months
FROM student;