2016-12-09 19 views
0

我想创建一个报告,我们可以看到课程完成日期和过期日期。以下是我走到这一步:在SQL查询中添加365天或年份 - MOODLE

SELECT u.firstname AS 'Firstname' , u.lastname AS 'Lastname', cat.name AS 'Organisation', c.fullname AS 'course', 
DATE_FORMAT(FROM_UNIXTIME(p.timecompleted),'%Y-%m-%d') AS completed 

FROM prefix_course_completions AS p 

JOIN prefix_course_categories AS cat 
JOIN prefix_course AS c ON p.course = c.id 
JOIN prefix_user AS u ON p.userid = u.id 
WHERE c.enablecompletion = 1 
ORDER BY u.firstname 

我想添加一个新的列,其中“已完成”列中的数据+ 365 =到期日期。我已经尝试了很多方法,如DATE_ADD/DATEADD,但我仍然无法得到它。你能帮我么。我将不胜感激任何建议和帮助。

在此先感谢

回答

3

这应该做你想要什么:

DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(p.timecompleted), 
        INTERVAL 1 YEAR), '%Y-%m-%d' 
      ) AS expiration_date 

如果你想要的是365天(这样的事情都脱围闰年),你可以使用INTERVAL 365 DAY来代替。

+0

谢谢你的快速回复。我已经尝试了上面的代码,但我得到了一个**查询失败**消息:_您在SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在第3行的DATE_FORMAT(DATE_ADD(FROM_UNIXTIME(p.timecompleted),INTERVAL 1 YEAR),'%Y-%m-%d'附近使用正确的语法。 插入下面的代码完成,并试图使用DATEADD而不是DATE_ADD,但仍然没有运气。 – Nightshade

+1

@Nightshade我怀疑你在'DATE_FORMAT'之前省略了逗号' – Barmar

+0

这么愚蠢的我忘记了逗号。孩子在医院过去的3天,谢谢你这么多先生的帮助,现在一切正常,谢谢!@Barmar – Nightshade