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要加上自己的处理才行。
1、你试试将后面的1973-11-30加上引号(')2、检查FROM_UNIXTIME函数的返回数据类型,将1973-11-30转换为与之对应的类型。
addTime字段很明显是一个datetime类型,在数据库中实际上保存的是一个秒值(记得好像是从1970年某个时间开始),FROM_UNIXTIME(addTime,'%Y-%m-%d ')应该是将这个datetime按照年、月、日格式输出。但FROM_UNIXTIME究竟返回什么数据类型,则要看函数定义了。
DATE_ADD是时间计算函数。DATE_ADD(<TIME>, <INTERVAL> )NOW()函数返回的是SQL命令执行的当前时间;
INTERVAL -1 DAY 的意思就是向前1天( 时间 - 1天) 等同于 INTEVAL -24 HOUR
如果你想向后一天,就可以写INTERVAL 1 DAY;或者 INTERVAL 24 HOUR 都是可以的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)