求教MYSQL的日期函数

求教MYSQL的日期函数,第1张

EXTRACT(type FROM date)从date中返回“type”的值。

MONTH(date) 返回date的月份,范围1到12。

MINUTE(date) 返回date的分钟,范围是0到59。

返回月份匹配的结果集

SELECT *

FROM tableA

WHERE EXTRACT(MONTH FROM NOW( )) =

EXTRACT(MONTH FROM logtime)

SELECT *

FROM tableA

WHERE MONTH(NOW( )) =

MONTH(logtime)

返回分钟匹配的结果集

SELECT *

FROM tableA

WHERE EXTRACT(MINUTE FROM NOW( )) =

EXTRACT(MINUTE FROM logtime)

SELECT *

FROM tableA

WHERE MINUTE(NOW( )) =

MINUTE(logtime)

你可以用年和月一起比较啊,去年,前年都不成问题,你原来问题没有说清楚前提和背景。

想查x个月以前的信息

if当前月<=x

SELECT *

FROM tableA

WHERE MONTH(logtime) <=(12-x+MONTH(NOW( ))) AND YEAR(logtime)<YEAR(NOW())

else

SELECT *

FROM tableA

WHERE MONTH(logtime) <=(MONTH(NOW( )-x) AND YEAR(logtime)<=YEAR(NOW())

在date的分钟上加上x分钟: DATE_ADD(date,INTERVAL x MINUTE)

MYSQL中也有DATEDIFF函数

DATEDIFF(expr,expr2)

DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分

很明显和MSSQL里的datefiff形同神异,并没有过多的参数,只能比较天的差别。

所以在MySQL要加上自己的处理才行。

做一个学校项目的时候 要根据上中晚查询 最后用的是

date_format(t1.record_time, '%H:%i:%s')  

SELECT t2.class_name,t1.class_no,t1.course_id,t1.course_name,t1.id,t1.pic_url,t1.record_time,t1.sign_day,t1.status,t1.student_name,t1.student_no FROM t_e_sign t1 LEFT JOIN t_e_sys_org t2 ON t2.org_code = t1.class_no WHERE IF (:studentName is not null, t1.student_name LIKE CONCAT('%',:studentName,'%') , 1 = 1) and IF (:className is not null, t2.class_name LIKE CONCAT('%',:className,'%') , 1 = 1) and IF (:startTime is not null, date_format(t1.record_time, '%Y-%m-%d') >=:startTime , 1 = 1) and IF (:endTime is not null, date_format(t1.record_time, '%Y-%m-%d') <=:endTime , 1 = 1) and IF (:startdetailTime is not null, date_format(t1.record_time, '%H:%i:%s') >=:startdetailTime , 1 = 1) and IF (:enddetailTime is not null, date_format(t1.record_time, '%H:%i:%s') <=:enddetailTime , 1 = 1) ORDER BY ?#{#pageable}", 

整个语句也写下吧


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7461593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存