我有一个查询从数据库中提取正确的数据,但它不会从时间戳返回我的月份.在timestamp列中,我得到一个空值,即使时间戳存在.它作为一个bigInt存储在DB中(这不是我的想法).
我需要的是一个像这样返回的日期:
Course | fcpd | Month
216 0.5 04
Run Code Online (Sandbox Code Playgroud)
但我得到:
Course | fcpd | Month
216 0.5 null
SELECT mdl_quiz.course, mdl_quiz.fcpd, MONTH(mdl_quiz_grades.timemodified) as Month FROM mdl_quiz INNER JOIN mdl_quiz_grades ON mdl_quiz.course = mdl_quiz_grades.quiz WHERE mdl_quiz_grades.userid = 9428 AND mdl_quiz.course = 215
Run Code Online (Sandbox Code Playgroud)
谁能指出我哪里出错?
fan*_*nts 10
在应用MONTH()函数之前,需要先将时间戳转换回日期.
MONTH(mdl_quiz_grades.timemodified)
Run Code Online (Sandbox Code Playgroud)
变
MONTH(FROM_UNIXTIME(mdl_quiz_grades.timemodified))
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多相关信息.
作为旁注,int对于时间戳来说已经足够了,bigint没有必要.时间戳是一个32位数字,这就是为什么它可以保持2038年1月19日的最大日期.