MySQL DATE 函数
MySQL Date 数据类型
DATE | YYYY-MM-DD |
---|---|
DATETIME | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | YYYY-MM-DD HH:MM:SS |
YEAR | YYYY或YY |
DATE_ADD()
- 向日期添加指定的时间间隔
DATE_ADD(date, INTERVAL expr type)
例子:添加45天
OrderId | ProductName | OrderDate |
---|---|---|
1 | Jarlsberg Cheese | 2008-11-11 13:23:44.657 |
select
DATE_ADD(OrderDate, INTERVAL 45 Day) AS OrderPayDate
from
Orders
DATE_SUB()
- 从日期减去指定的时间间隔
DATE_SUB(date, INTERVAL expr type)
例子:减去5天
select
date_sub(orderdate, interval 5 day) as substractdate
from
orders
DATEDIFF()
- 返回两个日期之间的天数
DATEDIFF(date1, date2)
,只有日期部分参与计算
select
datediff("2008-11-30", "2008-11-29") as diffdate
TIMESTAMPDIFF()
timestampdiff(type, start_time, end_time)
type可以为second,minute,hour,day等
DATE_FORMAT()
- 函数用于以不同的格式显示日期/时间数据
DATE_FORMAT(date, format)
select
date_format(now(), '%Y-%m'), # 2021-10
date_format(now(), '%b %d %Y %h:%i %p'),
date_format(now(), '%m-%d-%Y'),
date_format(now(), '%d %b %y'),
date_format(NOW(), '%d %b %Y %T:%f')
NOW()
- 返回当前的日期和时间
NOW()
select now(), curdate(), curtime()
例子:创建带有日期时间列的表,并插入一条记录
CREATE TABLE Orders
(
OrderId int NOT NULL,
ProductName varchar(50) NOT NULL,
OrderDate datetime NOT NULL DEFAULT NOW(),
PRIMARY KEY (OrderId)
)
INSERT INTO
Orders
(ProductName)
Values
('Jarlsberg Cheese')
CURDATE()
- 返回当前的日期
CURDATE()
CURTIME()
- 返回当前的时间
CURTIME()
DATE()
- 提取日期部分
DATE(date)
例子:提取日期/时间表达式的日期部分
select
productname,
date(orderdate) as orderdate
from
orders
where
orderid=1
EXTRACT()
- 返回日期/时间的单独部分
EXTRACT(unit FROM date)
select
extract(year from orderdate) as orderyear,
extract(month from orderdate) as ordermonth,
extract(day from orderdate) as orderday
from
orders
where orderid=1
MySQL 字符串函数
CONCAT()
在连接字符串的时候,只要其中一个是NULL,那么将返回NULL。
select concat('11', '22', '33');
select concat('11', '22', null);
表后追加
update
table_name
set
field=concat(field,'str')
表后追加
update
table_name
set
field=concat('str',field)
CONCAT_WS()
第一个参数是其他参数的分隔符
不会因为有NULL返回NULL
select concat_ws(',','a','b','c')
GROUP_CONCAT()
默认逗号分隔
select
id, group_concat(name)
from
mytable
group by
id;
可以指定分隔符,也可以去冗余
select
id, group_concat(distinct name, ';')
from
mytable
group by
id;
也可以倒序
select
id, group_concat(name order by name desc)
from
mytable
group by
id;
REPEAT()
- 复制字符串
repeat(str, num)
select repeat('ab',2);
LEFT(), RIGHT()
- 从左开始截取
left(str,length)
select
left(content,200) as abstract
from
my_content_t
- 从右开始截取
right(str,length)
select
right(content,200) as abstract
from
my_content_t
SUBSTRING()
substring(str,pos)
直到最后substring(str,pos,length)
pos可为负数,表示倒数
substring(str FROM pos)
substring(str FROM pos FOR len)
SUBSTRING_INDEX()
substring_index(str,delim,count)
count可负
select
substring_index("www.w3cschool.cn",'.',2) as abstract
from
wiki_user
SUBSTR()
substr(string string, num start, num length)
# 截取trans_no字段中的前两位字符
select
substr(trans_no,1,2) "前两位"
from
withdraw_amount_flow
MySQL 数学函数
所有数学函数在发生错误时,均返回NULL
。
ABS()
ABS(X)
返回X的绝对值
SIGN()
SIGN(X)
符号函数- 取值为-1 0 1
MOD()
MOD(N,M)
- 同 %
FLOOR()
FLOOR(X)
返回不大于X的最大整数值
CEILING()
CEILING(X)
返回不小于X的最小整数
ROUND()
ROUND(X)
四舍五入到最近的整数ROUND(X,D)
D表示几位小数
DIV
整除
SELECT 5 DIV 2;
EXP()
EXP(X)
自然对数底的X次方
LN()
LN(X)
返回X的自然对数
LOG()
LOG(X)
LOG(B,X)
LOG2(X)
LOG10(X)
POW()
POWER(X,Y)
SQRT()
SQRT(X)
PI()
COS(), SIN(), TAN()
select cos(pi());
select sin(pi());
select tan(pi()+1);
ACOS(), ASIN(), ATAN()
ATAN(Y,X)
ATAN2(Y,X)
COT(X)
RAND()
- RAND()
- RAND(N)
LEAST(X, Y, …)
- 有两个或更多个参数,返回最小的参数。
GREATEST(X, Y, …)
- 返回最大参数
DEGREES()
SELECT DEGREES(PI());
RADIANS()
SELECT RADIANS(90);
TRUNCATE()
TRUNCATE(X, D)
将数值X截到D个小数
SELECT TRUNCATE(122, -2); 100