目录

一些常用的mysql语句分享

时间相关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 获取当前日期
SELECT NOW(),CURDATE(),CURTIME();


# 获取前一天
SELECT  DATE_SUB(CURDATE(),INTERVAL 1 DAY);


# 获取后一天
SELECT  DATE_SUB(CURDATE(),INTERVAL -1 DAY);


# 年份差
SELECT TIMESTAMPDIFF(YEAR,'2017-05-01', DATE_FORMAT(now(), '%Y-%m-%d'))


# 月份差
SELECT TIMESTAMPDIFF(MONTH,'2017-05-01', DATE_FORMAT(now(), '%Y-%m-%d'))


# 天数差
SELECT datediff(DATE_FORMAT(now(), '%Y-%m-%d'),DATE_FORMAT('2018-09-10','%Y-%m-%d'))


# 获取本月最后一天
select last_day(curdate());


# 获取本月第一天
select date_add(curdate(), interval - day(curdate()) + 1 day);


# 获取当前时间与一个月之间的天数
select datediff(curdate(), date_sub(curdate(), interval 1 month));

身份证相关

1
2
# 通过身份证号码判断性别,例子为18位身份证的
select if (MOD(SUBSTRING(idno,17,1),2),'男','女') AS 性别 from sometable;

查询相关

1
2
3
4
5
6
# 多表查询,有外键关联
select a.name,b.phone from tableA a inner join tableB b on a.id = b.aid;


# 查询重复记录,本例子为查询公司内有多少人是重名的,对应的姓名是什么
select name,count(name) from company group by name having count(name) > 1

数据相关

1
2
# 把某张表的一部分数据插入到其他表,常用于做导出数据处理
insert into tableA (param1,param2) select `name`,phone,address from tableB where ...