mysql怎么终止当前正在执行的sql语句?
第一种:查Slowquery的SQL语法:
log_slow_queries=/var/log/mysql/mysql-slow.log
long_query_time=2(超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法XD)
第二种:设MySQLReplication用binlog:
log_bin=/var/log/mysql/mysql-bin.log(此档要用mysqlbinlog解来看)
mysql会将所有INSERT/UPDATE/DELETE语法记於此(但是语法可能跟你想的不同),这是要写给SLAVE用的log档
第三种:推荐此方法,将MySQL执行的每行指令全都记录起来:
log=/tmp/mysql.log
restartmysql後,tail-f/tmp/mysql.log就可以看到罗!
补充:最早前的方法是mysqldump,然後执行完後再mysqldump,再diff,但是在DB>1G後就放弃此方法了XD
SQL计算两个日期相差多少天数的函数?
SQL是高级的非过程化编程语言,一般针对数据库进行操作。日期函数:(要返回的天数/月数/年数,开始日期,结束日期)还有一些方法:使用DATEDIFF函数可以求两个日期之间相差的天数。
MySQL中的DATEDIFF函数仅需要两个参数 (即要计算相差天数的两个日期),第一个参数应是两个日期中较小的值,以避免出现负值(SQL Server中正好相反)。
在SQL Server中,可以指定该函数返回值所表示的类型(在这个例子中,返回以“日”为单位的差)。下面的解决方案采用了SQL Server的版本:
1 select datediff(day,allen_hd,ward_hd)2 from (3 select hiredate as ward_hd4 from emp5 where ename = 'WARD'6 ) x,7 (8 select hiredate as allen_hd9 from emp10 where ename = 'ALLEN'11 ) yMySQL用户只需去掉该函数的第一个参数,交换一下传递ALLEN_HD和WARD_HD的顺序即可。
mysql如何判断字段时间小于当前时间3天?
用datediff函数:DATEDIFF(expr,expr2) 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
例如你要查询字段时间小于当前时间3天的记录,可以这么写:
select * from `tablename` where datetiff(now(), `datefield`)>3
mysql如何查询时间间隔大于5分钟的数据(时间从现在往前推)?
这个得用存储过程了,一句话查询肯定解决不了。delimiter //Create Procedure findtime()Begindeclare lastdtime datetime default null;declare thisdtime datetime default null;declare lastname varchar(10)
;declare thisname varchar(10)
;declare done tinyint default 0;declare cur cursor for select dtime,name from `table`
;declare continue handler for sqlstate '02000' set done=1;create temporary table if not exists `tmp`(dtime datetime, name varchar(10));while done1 doif lastdtime is null thenfetch cur into lastdtime,lastname;elsefetch cur into thisdtime,thisname;if timediff(thisdtime,lastdtime)>'00:05:00' theninsert into `tmp` (dtime,name)values(lastdtime,lastname)
;set lastdtime=thisdtime;set lastname=thisname;end if;end if;end while;select * from `tmp`;End//call findtime()//

