mysql使用笔记
select distinct Code , Date(BeginTime) as AtDate from Session where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) = date(BeginTime)
欢迎大家阅读《mysql施用笔记》,跪求各位点评,by 搞代码
date()
返回时间中的日期
DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
当前日期减去1个月
distinct 去掉重复数据
------------------------------------------------------
show processlist 中的ID栏显示。
KILL [CONNECTION | QUERY] thread_id
每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。
------------------------------------------------------
select BeginTime , Count(distinct code) from Session s1 where To_days(BeginTime) >= To_days('2011-01-14') and To_days(BeginTime) <= To_days('2011-02-14') and AppCode = 'StoneAge' and code in ( select distinct code from Session s2 where To_days(s2.BeginTime) <= To_days(s1.BeginTime) - 1 and To_days(s2.BeginTime) >= To_days(s1.BeginTime) - 1 ) group by To_days(BeginTime)
To_days(s2.BeginTime)
返回日期的天数
update Card set expiration=date_add(bindDate , interval 1 year) where expiration='0000-00-00'
date_add(bindDate , interval 1 year)
当前日期加1年
select * from role where id between 2 and 3
查询两个数之间的数据,但包括ID为2和ID为3的数据
select TIME_TO_SEC(TIMEDIFF('2011-03-03 23:23:23' ,'2011-02-01 23:23:23'))
TIMEDIFF(expr,expr2)
TIMEDIFF() 返回起始时间 expr 和结束时间expr2 之间的时间。 expr 和expr2 为时间或 date-and-time 表达式,两个的类型必须一样。
mysql> SELECT TIMEDIFF(‘2000:01:01 00:00:00’,
-> ‘2000:01:01 00:00:00.000001’);
-> ‘-00:00:00.000001’
mysql> SELECT TIMEDIFF(‘1997-12-31 23:59:59.000001’,
-> ‘1997-12-30 01:01:01.000002’);
-> ’46:58:57.999999′
TIME_TO_SEC(time)
返回已转化为秒的time参数。
mysql> SELECT TIME_TO_SEC(’22:23:00′);
-> 80580
mysql> SELECT TIME_TO_SEC(’00:39:38′);
-> 2378
周统计
select DATE_FORMAT(incomingTime,'%x %v') as weekCount , count(0) as dateCount , min(date(incomingTime)) as minDate , max(date(incomingTime)) as maxDate from CallHistory WHERE uid <> '000.000' and date(incomingTime) <= '2011-09-04' and date(incomingTime) >= '2008-07-28' GROUP BY weekCount order by incomingTime
—-下面是没有经过测试的————————————————–
* TIMESTAMP(expr) , TIMESTAMP(expr,expr2)
对于一个单参数,该函数将日期或日期时间表达式 expr 作为日期时间值返回.对于两个参数, 它将时间表达式 expr2 添加到日期或日期时间表达式 expr 中,将theresult作为日期时间值返回。
mysql> SELECT TIMESTAMP(‘2003-12-31’);
-> ‘2003-12-31 00:00:00’
mysql> SELECT TIMESTAMP(‘2003-12-31 12:00:00′,’12:00:00’);
-> ‘2004-01-01 00:00:00’
* TIMESTAMPADD(interval,int_expr,datetime_expr)
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。 int_expr 的单位被时间间隔参数给定,该参数必须是以下值的其中一个: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR。
可使用所显示的关键词指定Interval值,或使用SQL_TSI_前缀。例如, DAY或SQL_TSI_DAY 都是正确的。
mysql> SELECT TIMESTAMPADD(MINUTE,1,’2003-01-02′);
-> ‘2003-01-02 00:01:00’
mysql> SELECT TIMESTAMPADD(WEEK,1,’2003-01-02′);
-> ‘2003-01-09’
* TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同。
mysql> SELECT TIMESTAMPDIFF(MONTH,’2003-02-01′,’2003-05-01′);
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,’2002-05-01′,’2001-01-01′);
-> -1
* TIME_FORMAT(time,format)
其使用和 DATE_FORMAT()函数相同, 然而format 字符串可能仅会包含处理小时、分钟和秒的格式说明符。其它说明符产生一个NULL值或0。
若time value包含一个大于23的小时部分,则 %H 和 %k 小时格式说明符会产生一个大于0..23的通常范围的值。另一个小时格式说明符产生小时值模数12。
mysql> SELECT TIME_FORMAT(‘100:00:00’, ‘%H %k %h %I %l’);
-> ‘100 100 04 04 4’