日期函數
函 數 | 功 能 描 述 |
---|---|
current_date() | 獲取當前年月日 |
current_time() | 獲取當前時分秒 |
current_timestamp() | 獲取當前時間戳 |
date(datetime) | 返回datetime參數的日期部分 |
date_add(date, interval d_value_type) | 在date中添加日期,單位可以是year、day、minute、second |
date_sub(date, interval d_value_type) | 在date中減去日期,單位可以是year、day、minute、second |
datediff(date1, date2) | 兩個日期的差,單位是day |
now() | 當前日期時間 |
年月日
select current_date();
時分秒
select current_time();
時間戳
select current_timestamp();
在日期的基礎上加時間
select date_add(‘2017-10-28’, interval 10 day);
在日期的基礎上減時間
select date_sub(‘2017-10-1’, interval 2 day);
計算兩個日期之間相差多少天
select datediff(‘2017-10-10’, ‘2016-9-1’);
案例1:
創建一張表,記錄生日(將當前日期添加進表)
create table tmp( id int primary key auto_increment, birthday date );
insert into tmp(birthday) values(current_date());
案例2
創建一個留言表,並插入兩條數據
create table msg ( id int primary key auto_increment, content varchar(30) not null, sendtime datetime );
mysql> insert into msg(content,sendtime) values(‘hello1’, now());
mysql> insert into msg(content,sendtime) values(‘hello2’, now());
顯示所有留言信息,發佈日期只顯示日期,不用顯示時間
select content,date(sendtime) from msg;
請查詢在2分鐘內發佈的帖子
select * from msg where date_add(sendtime, interval 2 minute) > now();
字符串函數
函 數 | 函 數 功 能 |
---|---|
charset(str) | 返回字符串字符集 |
concar(string1, …) | 連接字符串 |
ucase(string) | 轉換爲大寫 |
lcase(string) | 轉換爲小寫 |
length(string) | string 長度 |
replace(str, serch_str, replace_str) | 在 str 中用 replace_str 替換 serch_str |
strcmp(str1, str2) | 比較兩個字符串大小 |
substring(str, position, length) | 從 str 的 position 開始取出 length 個字符長度 |
創建一張學生表
CREATE TABLE students (
name VARCHAR(20) NOT NULL,
cla VARCHAR(10) NOT NULL,
chinese INT,
math INT,
english INT
);
插入數據
INSERT INTO students VALUES (‘白龍馬’, ‘c++大神班’, 100, 83, 60);
INSERT INTO students VALUES (‘猴哥’, ‘java大牛班’, 73, 88, 59);
INSERT INTO students (name, cla, chinese, math, english) VALUES
(‘豬悟能’, ‘c++大神班’, 88, 98, 90),
(‘曹孟德’, ‘java大牛班’, 82, 84, 67),
(‘趙雲’, ‘小白班’, 75, 65, 30),
(‘劉玄德’, ‘java大牛班’, 55, 85, 45),
(‘孫權’, ‘c++大神班’, 70, 73, 78),
(‘宋公明’, ‘c++大神班’, 75, 65, 30),
(‘曹操’, ‘小白班’, 75, 65, 30);
獲取表中cla列的字符集
select charset(cla) from students;
要求顯示student表中的信息,顯示格式: “XXX的語文是XXX分,數學XXX分,英語XXX分”
select concat(‘姓名:’, name, ’ 班級:’, cla, ’ 語文:’, chinese, ’ 數學:’, math, ’ 英語:’, english) as ‘成績’ from students;
求學生表中學生姓名佔用的字節數
select length(name) from students;
將cla字段小寫替換爲大寫顯示 c -> C java -> JAVA
select name, replace(cla, ‘c’, ‘C’) from students; select name, replace(cla, ‘java’, ‘JAVA’) from students;
截取name字段,姓氏部分
select substring(name, 0, 1) from students;
大寫顯示cla字段的首字母
select name,ucase(cla) from students;
數學函數
函 數 | 函 數 功 能 |
---|---|
abs(number) | 絕對值函數 |
bin(decimal_number) | 十進制轉換爲二進制 |
hex(decimal_number) | 十進制轉換爲十六進制 |
ceiling(number) | 向上去整 |
floor(number) | 向下去整 |
format(number, decimal_palces) | 格式化,保留 decimal_palces 位小數(四捨五入) |
rand() | 返回隨機數,範圍 [0.0, 1.0) |
mod(number, denominator) | 取模求餘 |
-100.2 絕對值
select abs(-100.2);
23.04 向上取整
select ceiling(23.04);
23.7 向下取整
select floor(23.7);
12.3456 保留兩位小數,四捨五入
select format(12.3456, 2);
產生隨機數
select rand();
其它函數
函 數 | 函 數 功 能 |
---|---|
user() | 獲取當前用戶 |
md5(str) | 對一個字符串取 md5 摘要 |
database() | 顯示當前正在使用的數據庫 |
password(str); | 進行加密 |
ifnull(val1, val2) | 如果 val1 爲 null,返回 val2,否則返回 val1 的值 |
查詢當前用戶
select user();
對一個字符串’haha’進行md5摘要,摘要後得到一個32位字符串
select md5(‘haha’);
顯示當前正在使用的數據庫
select database();
ifnull(val1, val2) 如果val1爲null,返回val2,否則返回val1的值
select ifnull(null, ‘22222’); select ifnull(‘11111’, ‘22222’);