MySQL函数

MySQL函数

日期和时间函数

CURRENT_DATE (  )

当前日期

CURRENT_TIME (  )

当前时间

CURRENT_TIMESTAMP (  )

当前时间戳

DATE (datetime )

返回datetime的日期部分

DATE_ADD (date2 , INTERVAL d_value d_type )

date2中加上日期或时间

DATE_SUB (date2 , INTERVAL d_value d_type )

date2上减去一个时间

DATEDIFF (date1 ,date2 )

两个日期差(结果是天)

TIMEDIFF(date1,date2)

两个时间差(多少小时多少分钟多少秒)

NOW (  )

当前时间

YEAR|Month|DATE (datetime )

年月日


案例:

select current_date() from dual; -- 得到当前日期
select current_time() from dual; -- 得到请求时间

date_add() date_sub()的用法

案例:

-- 创建一个留言表
create table message(id int , title varchar(64), publishdate datetime);
-- 查询出,两个小时内,发布的消息:
select * from message where  date_add(publishdate, interval 2 hour) >= now();
-- 去年的今天
SELECT DATE_ADD(NOW(),INTERVAL -1 YEAR) FROM DUAL;

DATE_ADD (date2 , INTERVAL d_value d_type )
DATE_SUB (date2 , INTERVAL d_value d_type )

type 可以使用如下值:

MySQL函数_第1张图片

案例:选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

set @dt = '2008-09-10 07:15:30.123456';
 
select date(@dt); -- 2008-09-10
select time(@dt); -- 07:15:30.123456
select year(@dt); -- 2008
select quarter(@dt); -- 3
select month(@dt); -- 9
select week(@dt); -- 36
select day(@dt); -- 10
select hour(@dt); -- 7
select minute(@dt); -- 15
select second(@dt); -- 30
select microsecond(@dt); -- 123456

字符函数

CHARSET(str)

返回字串字符集

CONCAT (string2  [,... ])

连接字串

INSTR (string ,substring )

返回substring在string中出现的位置,没有返回0

UCASE (string2 )

转换成大写

LCASE (string2 )

转换成小写

LEFT (string2 ,length )

从string2中的左边起取length个字符

LENGTH (string )

string长度

REPLACE (str ,search_str ,replace_str )

在str中用replace_str替换search_str

STRCMP (string1 ,string2 )

逐字符比较两字串大小,

SUBSTRING (str , position [,length ])

从str的position开始,取length个字符

LTRIM (string2 ) RTRIM (string2 )  trim

去除前端空格或后端空格


案例:

-- 返回name的字符集
SELECT CHARSET(name) from t3;

-- 在name后加上abc
SELECT CONCAT(name,'abc') from t3;

-- 将name第一个字母大写,其余字母小写
SELECT CONCAT(UCASE(SUBSTRING(name,1,1)), LCASE(SUBSTRING(name,2))) FROM t3;

数学函数

</pre><table><tbody><tr><td valign="top"><p>ABS (number2 )</p></td><td valign="top"><p>绝对值</p></td></tr><tr><td valign="top"><p>BIN (decimal_number )</p></td><td valign="top"><p>十进制转二进制</p></td></tr><tr><td valign="top"><p>CEILING (number2 )</p></td><td valign="top"><p>向上取整</p></td></tr><tr><td valign="top"><p>CONV(number2,from_base,to_base)</p></td><td valign="top"><p>进制转换</p></td></tr><tr><td valign="top"><p>FLOOR (number2 )</p></td><td valign="top"><p>向下取整</p></td></tr><tr><td valign="top"><p>FORMAT (number,decimal_places )</p></td><td valign="top"><p>保留小数位数</p></td></tr><tr><td valign="top"><p>HEX (DecimalNumber )</p></td><td valign="top"><p>转十六进制</p></td></tr><tr><td valign="top"><p>LEAST (number , number2  [,..])</p></td><td valign="top"><p>求最小值</p></td></tr><tr><td valign="top"><p>MOD (numerator ,denominator )</p></td><td valign="top"><p>求余</p></td></tr><tr><td valign="top"><p>RAND([seed])</p></td><td valign="top"><p>随机数</p></td></tr></tbody></table><p></p><p>案例:</p><pre name="code" class="sql">-- 100的二进制表示
SELECT BIN(100) FROM DUAL;
-- 向上取整 11
SELECT CEILING(10.1) FROM DUAL;
-- 向下取整 10
SELECT FLOOR(10.99) FROM DUAL;
-- 求余 2
SELECT MOD(35, 3) FROM DUAL;
-- 随机产生一个0-1之间的小数
SELECT RAND() FROM DUAL;

PSrand()返回一个随机浮点值,范围在01之间 (即其范围为0v1.0)。若rand(N)已指定一个整数参数N,则它被用作种子值,用来产生重复序列,也是在0-1之间的。  


你可能感兴趣的:(mysql,函数)