MySQL里的日期与时间
格式化:select DATE_FORMAT(now(), ‘%Y-%m-%d %T’);
从1970年1月1日到指定时间的天数:select to_days(now());
取当前时间:
select now(), current_timestamp(),current_timestamp,current_time, curtime(),current_date, curdate(), sysdate();
sysdate()函数是这个函数执行时候的时间,其它的是语句开始执行的时间。
时间的加减:
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
DATEDIFF(date1,date2),2个时间的天数
TIMESTAMPDIFF(type,date1,date2),2个时间的差额
TIMESTAMPADD(type,int_expr,date1),加时间
存储过程
set @var = ''; set @var2 = 'fff'; set @var = @var2; -- 这种只能用在declare了的变量 set var = 'sdfdf'; -- 这里不会输出返回结果,只会设置变量 select `day` into @var from redash_queue_flush_sem_base_data limit 1; -- 这里在设置变量的同时,也会返回 select @day:=`day` from redash_queue_flush_sem_base_data limit 1; CREATE DEFINER=`dealam_stat_prod`@`%` PROCEDURE `flush_sem_base_data`() -- 注意这里的BYEBYE,在里面用leave BYEBYE就可以退出了,存储过程里没有return之类的功能 BYEBYE:BEGIN declare vday varchar(100); declare vvar VARCHAR(50); declare vvalue VARCHAR(200); declare select_done int default 0; -- 定义select游标 declare cur_queue cursor for select `var`, `value` from redash_variable limit 2; -- 定义游标是否循环完成的标记变量 declare continue handler for not found set select_done = 1; if @queue_count > 0 then insert into redash_logs (`what`) values (concat('刷新队列里还有数据:', @queue_count)); select concat('刷新队列里还有数据:', @queue_count) as msg; leave BYEBYE; else -- 找出待更新订单对应的订单日期,放入待刷新队列中 insert ignore redash_queue_flush_sem_base_data select distinct(from_unixtime(transaction_time, '%Y-%m-%d')) from da_sem_order where updated_time>@sem_last_update_time order by updated_time; end if; open cur_queue; loop_label:loop -- 注意这里变量前没有加@ fetch cur_queue into vvar, vvalue; -- select_done 前没有加@ if select_done = 1 then leave loop_label; end if; -- 注意这里变量前也没有加@,也就是说如果是declare的变量,好像是不用加的 select vvar, vvalue; set @vvar2 = vvar; select @vvar2; insert into redash_logs (`what`) values (concat('刷新了sem base data,日期:', vvar)); end loop; END
查看未提交的事务
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx\G;
查看锁信息
select * from information_schema.INNODB_TRX WHERE trx_state=’LOCK WAIT’\G