mysql时间相减得到天数保留两位_【敲黑板!】分布式事务数据库 —-MySQL 数据库开发规范(第四节)...

97e88403f72fff389c481249cdf2cc62.png

今天Amy着重为大家讲解一下关于函数的一些硬核知识,也是本文中非常重要的一个章节,记得认真看(dianzan)哦~

b7af061661daaf90b959298db4976b1b.png

第四节、函数

4.1 字符串连接函数

MySQL 数据库中字符串连接方法,需使用 CONCAT() 或 CONCAT_ WS()函数,语法如下:

CONCAT(string1,string2,…)

CONCAT_ WS(separator,string1,string2,…)

MySQL 中的 CONCAT 和 Oracle 中的 CONCAT 不同,可以接受任意多个参数,可以较为简

单的替代’||'符号的作用。MySQL 也可以通过 sql_mode 配置双管道符作为字符串连接运算符,

但不推荐这样做。

4.2 字符串长度统计函数

LENGTH(string) #返回 string 字符串所占的字节数

CHAR_LENGTH(string) #返回 string 字符串中的字符个数

统计字符个数,就不区分是汉字还是字母或数字,也跟字符集没有关系,若统计的是字

节数,则由字符是汉字、字母或数字类型,以及字符集共同决定。

4.2.1 特别说明

我们所有的 MySQL 数据库都将会采用统一的 UTF8 编码,所以一个汉字占 3 个字节,

中文输入法(或称全角输入模式)下的字母或数字占 3 个字节;英文输入法(或半角输入法

模式)下一个字母或数字占 1 个字节。

4.3 字符串判断函数

IF(exp1,exp2,exp3):若是 exp1 为真,返回 exp2;若是 exp1 为假,返回 exp3;

IFNULL(exp1,exp2):若是 exp1 IS NOT NULL,返回 exp1,否则返回 exp2;

NULLIF(exp1,exp2):若是 exp1=exp2,返回 NULL,否则返回 exp1;

4.4 字符串替换函数

LTRIM(exp1):去掉 exp1 中字符串开头的空格;

RTRIM(exp1):去掉 exp1 中字符串结尾的空格;

TRIM(exp1):去掉 exp1 中的开头和结尾的空格;

TRIM(exp2,exp1):去除掉 exp1 中存在的字符串 exp2;

4.5 字符串查找函数

SUBSTRING_INDEX(exp1,delim,count)

exp1 为 字 符 串 , delim 为 分 割 符 号 , count 表 示 第 几 个 风 格 符 号 , 例 如 :

SUBSTRING_INDEX(‘热璞科技’,‘.’,1),返回:ali

SUBSTRING(exp1,pos,len)

exp1 为字符串,pos 为位置,len 为长度,例如:SUBSTRING(‘热璞科技’,1,5),返回:ali。

LOCAL(substr,str)

查找 substr 在 str 中的第一个位置,例如:LCOAL(热璞科技’,‘.’),返回:6。

4.6 字母大小写转换函数

UPPER(exp1):把字符串 exp1 转换成大写;

LOWER(exp1):把字符串 exp1 转换成小写;

4.7 数学函数

ABS(value):返回 value 的绝对值,例:ABS(-101),返回:101

FLOOR(value):去掉 value 的小数,例:FLOOR(2013.8),返回:2013

MOD(N,M):返回 N 除以 M 的余数,例:MOD(2013,10),返回:3

ROUND(value):返回 value 的四舍五入值,例:FLOOR(2013.8),返回:2014

ROUND(value,num):保留 num 位小数 value 的四舍五入值,例FLOOR(2013.867,1),返回:2013.9

RAND():返回随机数值

4.8 日期操作函数

获取当前时间函数:NOW()、CURDATE()、CURTIME()

NOW()函数精确到秒, 格式:YYYY-MM-DD HH:MM:SS

CURDATE()函数精确到天, 格式:YYYY-MM-DD

CURTIME()函数提供小时、分钟、秒, 格式:HH:MM:SS

4.8.1 特别说明

从主备数据异步复制的数据安全性角度出发,禁止使用 SYSDATE()函数获取当前时间。

日期数值的加减函数

DATE_ADD(date,INTERVAL expr type)

DATE_ SUB(date,INTERVAL expr type)

常用的几种 type 类型:YEAR、MONTH、DAY、HOUR、MINUTE,其中 expr 可以为

正数或负数,我们在开过程中,一般使用 DATE_ADD()函数,若要做日期减去一个数字的

方式,就使用负数。

MySQL 中不能像 Oracle 那样直接对时间类型进行加减运算,直接使用加减运算符不会

得到符合预期的结果,需要使用函数进行运算。

DATEDIFF(expr1,expr2),是返回 开始日期 expr1 与 结束日期 expr2 之间,相差的天

数 ,返回值为正数或负数。

返回日期某部分信息的函数

YEAR(expr1) 返回日期 expr1 部分的年份;

MONTH(expr1) 返回日期 expr1 部分的月份;

DAY(expr1)返回 expr1 部分的天数;

WEEKDAY(expr1)返回 expr1 对应的星期数字,0 表示星期一,1 表示星期二,其他依次类

推;

4.9 类型转换函数

 日期类型格式转换

字符串转换成日期方式,DATE_FORMAT()或 STR_TO_DATE(),两个函数的格式如下:

DATE_FORMAT(expr1,format)

STR_TO_DATE(expr1, format)

4.9.1 特别说明

STR_TO_DATE()是为兼容 Oracle 数据库对应函数。

常用的日期格式 YYYY-MM-DD HH:MM:SS 对应的 FORMAT 为:%Y-%m-%d %H:%i:%S。

通用类型转换函数

CAST(expr AS type) 则是把 expr 数字或字符串 转换为 type 类型;

CONVERT(expr,type) 则是把 expr 数字或字符串 转换为 type 类型;

CONVERT(expr USING transcoding_name) 则是转换字符串或字段的字符集编码;

日期整型转换函数

UNIX_TIMESTAMP(date_string) 则是将字符串格式表达的日期转换成 INT 无符号类型的整

型数值,例如:

f5d57dd7701b9b9900368065f63d4648.png

FROM_UNIXTIME(int_value) 则是将用整型数值表达的日期转换成字符串格式的日期,例

如:

4d7c3cc865a805eb2bb7ca61f5caa101.png

IP 地址转换

可以使用 INET_ATON()、INET_NTOA()、INET6_ATON()、INET6_NTOA()实现 IP 地址和

整型值之间的转换。

隐式转换

在不同类型的列之间发生比较或运算时,MySQL 遵循如下规则:

NULL 和 NULL 比较不转换;

字符串和不同的字符串比较,则使用字符串比较;

整型和不同的整型比较,则使用整型比较;

十六进制值和整型以外的类型比较时十六进制值视为二进制字符串;

时间类型和字符串常量比较时,字符串转换为时间类型进行比较;

DECIMAL 类型的比较方式取决于另一个值的类型,如果是整型,则使用 DECIMAL 比

较;如果是浮点型,则使用浮点类型比较。其它情况,使用浮点比较;

4.10 特殊函数

SYSDATE()

原意为获取调用函数时刻的时间,通常在标准化的 MySQL 配置中,会将其修改为 NOW()

的同义词,为 SQL 语句开始执行的时间。从而规避 SYSDATE 带来的复制问题与

sysdate-is-now 参数带来的行为改变导致的潜在的配置不一致风险两个角度考虑,故建议禁

止使用函数 SYSDATE()。

LAST_INSERT_ID()

获取最近成功插入带自增长的表的数据行的自增长 ID 值,在分布式数据库开发当中,因可

能涉及到分布式事务,以及全局自增 ID,因此,禁止使用该函数。

SLEEP()、BENCHMARK()

应用程序中要禁止使用此类函数,及防 SQL 注入方式对待。

UUID()

生产全局唯一 ID 的函数,MySQL 使用通用的算法,算法版本为 1,该函数不能确保绝对不

发生冲突,但是冲突的概率极低。由于 UUID 分布的随机性,非常不适合作为 InnoDB 存储

引擎表的主键或唯一性的标识,非特殊原因或特殊场景不应使用。

GET_LOCK()、RELEASE_LOCK()、IS_FREE_LOCK()、IS_USED_LOCK()

用户锁函数,对于定时调度存储过程,该系列函数可以用于确保只有一个存储过程正在运行

类型的特殊功能,或者控制应用程序单线程运行类型的特殊功能。我们建议不要在分布式数

据库中使用存储过程,因此,也禁止使用此类函数。

4.11 聚合函数

分布式数据库 能够支持聚合函数与 GROUP BY,ORDER BY,HAVING 的使用;也

可以在 JOIN 语句中使用聚合函数。如:

SELECT count(t.id) FROM t LEFT JOIN t1 on t.id=t1.id GROUP BY t.name;

4.11.1 嵌套聚合函数

禁止在分布式数据库中使用 MAX(AVG())、COUNT(DISTINCT)这之类的嵌套聚合函数。

好了,以上就是今天的内容,我们明天再见啦~啵唧~

9d9cbcbde2d27b6b2279df55a69d5b47.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3类代码安全风险如何避免?

简介:企业和开发者在解决开源依赖包漏洞问题的同时,还需要考虑如何更全面地保障自己的代码数据安全。那么有哪些安全问题值得我们关注呢? 编者按:本次 Apache Log4j2 开源依赖包漏洞为所有人敲响警钟,企业的代码作为最…

手工模拟实现 Docker 容器网络!

作者 | 张彦飞allen来源 | 开发内功修炼如今服务器虚拟化技术已经发展到了深水区。现在业界已经有很多公司都迁移到容器上了。我们的开发写出来的代码大概率是要运行在容器上的。因此深刻理解容器网络的工作原理非常的重要。只有这样将来遇到问题的时候才知道该如何下手处理。网…

技术分享 | 使用 mPaaS 配置 SM2 国密加密指南

简介:随着移动智能终端的广泛应用,敏感信息极易被监控或盗取,给国家、企事业及个人带来极大政治、经济损失。金融和重要领域的各个企业正在逐步落实并完成国产密码改造工作。为解决客户侧因更换加密算法造成的种种不便,mPaaS 现已…

我的世界1.8.9无需正版的服务器,我的世界1period;8period;9服务器纯洁服地址 | 手游网游页游攻略大全...

发布时间:2015-09-26怎么创建属于自己的服务器那?开服教程为大家准备好了.如果我们想和小伙伴们联机进行玩耍的话就必须要建立一个服务器,要不然就是加入别人的服务器,那么服务器的建立方法是什么呢?我 ...标签:我的世界攻略 我的世界 我的世界开服发布…

报表功能升级|新增的这4项图表组件太好用了吧

简介:你们要的交叉透视表、词云、日历热力图、雷达图安排上啦~ 宜搭3.0上线已满一月,大家体验如何呢? 为了让大家更好地实现一站式数据加工处理及展示,我们近期针对报表板块做了升级 我们新上线了4项大家在社区呼声…

进程切换的本质是什么?

作者 | 陆小凤来源 | 码农的荒岛求生我们都知道操作系统最重要的功能之一是多任务能力,也就是可以运行超过CPU数量的程序——即进程,要想实现这一功能就必须具备将有限的CPU资源在多个进程之间分配的能力,在程序员看来,我们的程序…

lol1.7更新服务器维护,lol今天停机维护到几点11日7.1版本停机更新公告

lol今天停机维护到几点,lol1月11日停机维护更新公告,lol今天怎么进不去2017?下面小编将英雄联盟发布的停机公告详细给大家介绍。lol今天停机维护到几点1月11日早7点30分全区停机维护,预计停机时间为07:30-12:0011日7.1版本停机更…

Log4j漏洞不仅仅是修复,更需要构建有效预警机制

简介:软件的漏洞有时不可避免,根据Gartner的相关统计,到 2025 年,30% 的关键信息基础设施组织将遇到安全漏洞。日志服务SLS,可帮助快速部署一个预警机制,使得漏洞被利用时可以快速发现并及时响应。通过使用…

太强了!这款开源终端工具可查询 IP 信息~

作者 | JackTian来源 | 杰哥的IT之旅在 Linux 下,有dig、nslookup、traceroute等多种非常实用的网络调试工具。dig:是常用的域名查询工具,可以用来测试域名是否正常。nslookup:是常用的域名查询工具,也就是查 DNS 信息…

顺序写磁盘比随机写内存_深入理解 linux磁盘顺序写、随机写

一、前言随机写会导致磁头不停地换道,造成效率的极大降低;顺序写磁头几乎不用换道,或者换道的时间很短。本文来讨论一下两者具体的差别以及相应的内核调用。二、环境准备三、fio介绍通过fio测试,能够反映在读写中的状态&#xff0…

为余势负天工背,云原生内存数据库Tair助力用户体验优化

简介:作为双11大促承载流量洪峰的利器,Tair支撑了电商交易核心体验场景。不仅在数十亿QPS的峰值下保持着亚毫秒级别的顺滑延迟,同时在电商交易核心体验场景上也做出了技术创新。 作者 | 漠冰 来源 | 阿里技术公众号 作为双11大促承载流量洪峰…

【视频特辑】数据分析师必备,快速制作一张强大好用的大宽表

简介:随着企业数字化进程的逐步推进,在日常经营过程当中会沉淀下越来越多的数据信息。 每当想做数据分析的时候,就会发现想要的指标分散在不同的数据源、数据集、数据表当中。 Quick BI的数据关联功能,可以帮助数据分析师快速将指…

读取硬盘前的准备工作有哪些?

作者 | 闪客sun来源 | 低并发编程读取硬盘数据到内存中,是操作系统的一个基础功能。读取硬盘需要有块设备驱动程序,而以文件的方式来读取则还有要再上面包一层文件系统。把读出来的数据放到内存,就涉及到内存中缓冲区的管理。上面说的每一件事…

【视频特辑】提效神器,如何用Quick BI高效配置员工的用数权限

简介:随着企业数字化进程逐步加速,企业所产生和积累的数据资源日益增多。每当员工的用数权限发生变动,管理员都需要进行复杂繁琐的重复性配置流程,不仅耗时耗力还容易出错。 如何能便捷地对员工用数权限进行高效管理?试…

让容器跑得更快:CPU Burst 技术实践

简介:让人讨厌的 CPU 限流影响容器运行,有时人们不得不牺牲容器部署密度来避免 CPU 限流出现。我们设计的 CPU Burst 技术既能保证容器运行服务质量,又不降低容器部署密度。CPU Burst 特性已合入 Linux 5.14,Anolis OS 8.2、Aliba…

实时数仓Hologres首次走进阿里淘特双11

简介:这是淘特在阿里巴巴参与的第二个双11大促,大促期间累计超过上千万消费者在此买到心仪的商品,数百万家商家因为淘特而变得不同,未来,淘特也将会继续更好的服务于下沉市场,让惠民走近千万家。 2021年11…

Cluster 集群能支撑的数据有多大?

作者 | 码哥字节来源 | 码哥字节本文将对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行深入拆解。目的在于掌握什么是 Cluster ?Cluster 分片原理,客户端定位数据原理、故障切换,选主,什么场景使用…

All in one:如何搭建端到端可观测体系

简介:一文看懂可观测! 作者:西杰 & 白玙 可观测的前生今世 系统的可观测与故障可分析作为系统运维中重要的衡量标准,随着系统在架构、资源单位、资源获取方式、通信方式演进过程,遇到了巨大挑战。而这些挑战&am…

链路分析 K.O “五大经典问题”

简介:链路分析是基于已存储的全量链路明细数据,自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。 作者:涯海 链路追踪的 “第三种玩法” 提起链路追踪,大家会很自然的想到使用调用链排查…

Kubernetes 上容器的启动顺序如何把控?

作者 | AddoZhang来源 | 云原生指北为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的。类似 TektonCD 中 task 和 step 的概念就分别与 pod 和 container 对应,而 step 是按照顺序执行的。此外还…