Mysql 函数使用
Mysql 函数
SELECT CONCAT(id,`jobs_name`,created_at) FROM jobs 拼接列
SELECT INSERT('123456789',1,3,'e') 替换字符串
从第多少位到多少位 但是只能从1开始,也没有什么负数的功能
SELECT LOWER("JAVA") 把字符串转成小写
SELECT upper("java") 把字符串转成大写
SELECT left("java",1) 从左截取字符串
返回字符串的左边第多少个字,如果第二个参数是null 那么还是返回null
SELECT RIGHT("java",NULL) 从右截取字符串
返回字符串右边的第多少个字,如果第二个参数是null 那么还是返回null
SELECT LPAD("java",8,"q") 补全字符串
补全之后是多少位 q 就是重复补 ,在左边补充
SELECT RPAD("java",8,"q") 在右边补充字符串
select TRIM(" asdadw ") 去除字符串两端的空格
elect LTRIM(" asdadw ") 只去除左边的空格
elect RTRIM(" asdadw ") 只去除右边的空格
SELECT REPLACE(str,from_str,to_str) 字符串替换
SELECT REPLACE("php","p","c")
SELECT STRCMP("c","b") 比较字符串
比较两个字符串的ascii 码的大小 c是99 b 是98 所以返回时1 如果互换位置就会返回-1,如果相等则返回0
如果是多个字符串的话,则会一位一位的进行比较
select REPEAT("php",3) 重复字符串
重复PHP3次
SELECT SUBSTR("123456",3,5) 字符串截取
开始位置为3 截取字符串长度5
数字操作了
SELECT ABS(-1.999) 返回绝对值
SELECT CEIL(0.8),CEIL(-0.9) 返回大于这个值的最小整数
SELECT FLOOR(-0.9) 小于这个值的大整数
SELECT MOD(10,6) 求余数 10/6 余4
SELECT ROUND(1.123,2) 返回1.123 四舍五入保留两位小数,如果没有小数会强行加上小数
SELECT TRUNCATE(1.2321,2) 直接保留两位小数不进行四舍五入
时间的操作
SELECT UNIX_TIMESTAMP("2018!09!11")
默认是当前时间,函数的参数可以为空
FROM_UNIXTIME() 将时间戳转成时间格式
比如
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()),'%Y-%m-%d %j')
第一个参数就是时间戳,这里是当前时间 第二个参数是时间格式(例子就是查询当前时间和今天是今年的第多少天)
第二个参数非必填,如果不传则是默认时间 '%Y-%m-%d %H:%i:%S'
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
SELECT WEEk(NOW()),YEAR(NOW()),HOUR(NOW()),MINUTE(NOW()),MONTHNAME(NOW())
分别代表着 当前时间是今年的多少周,年号,小时(24格式),分钟,英文的月份名称
SELECT DATE_FORMAT(NOW(),"%Y-%m %j")
格式化时间戳和FROM_UNIXTIME的用法一模一样
DATE_ADD 对时间进行加减
DATE_ADD(date,INTERVAL expr unit)
中INTERVAL是间隔类型关键字,expr是一个表达式,这个表达式对应后面的类型,type是间隔类型,MySQL提供了13种间隔类型
HOUR |
小时 |
MINUTE |
分钟 |
SECOND |
秒 |
YEAR | 年 |
MONTH | 月 |
DAY | 日 |
YEAR_MONTH | 年月 |
DAY_HOUR | 日小时 |
DAY_MINUTE | 日分钟 |
DAY_SECOND | 日秒钟 |
HOUR_MINUTE |
小时分钟 |
HOUR_SECOND |
小时秒 |
MINUTE_SECOND |
分钟秒 |
SELECT DATE_ADD(NOW(),INTERVAL +2 hour) 两个小时之后
select now(),date_add(now(),INTERVAL 1 minute) 一分钟之后
select now(),date_add(now(),INTERVAL 1 day) 一天之后
select now(),date_add(now(),INTERVAL '1_2' DAY_HOUR) 一天两小时之后
当前也可以使用负数表示前几天 比如
select now(),date_add(now(),INTERVAL -1 minute) 一分钟之前
SELECT DATEDIFF(NOW(),"2018-04-27") 查看时间间隔
第一个参数是大的,相当于第一个参数减去减去第二个参数
距离2018-04-27已经过去了722天
其他函数
select DATABASE()
查看当前use 的数据库
SELECT version()
查看当前数据库版本
SELECT user()
查看当前登录的用户名
INET_ATON()
SELECT INET_ATON("192.168.100.11")
把ip转成数字
INET_NTOA()
SELECT INET_NTOA("3232261131")
把数字转成IP地址
查询192.168.1.3 到192.168.1.20 之间有多少个IP
select * from t where inet_aton(ip)>=inet_aton('192.168.1.2') and inet_aton(ip)<=inet_aton('192.168.1.20');
PASSWORD()
Mysql 的加密方式会返回41位
MD5()
md5加密