SQL常用函数收藏

日期时间相关


【date_format】

DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
参考地址:https://www.runoob.com/sql/func-date-format.html

-- 函数:date_format
select DATE_FORMAT(Now(),"%Y-%m-%d %H:%i:%S") as v_current_date, 
DATE_FORMAT(datetime,"%m - %w") 
from user

【from_unixtime】

from_unixtime() 是 SQL 中用于将 UNIX 时间戳转换为日期和时间格式的函数。
UNIX 时间戳是指从1970 年 1 月 1 日(UTC)开始的秒数。

-- 函数: FROM_UNIXTIME(unix_timestamp)
-- 注意:这里的unix_timestamp值单位必须为秒,毫秒将转化失败
select DATE_FORMAT(FROM_UNIXTIME(unixtime), "%Y-%m-%d %H:%i:%S") as datetime
from user

【unix_timestamp】

UNIX_TIMESTAMP 返回一个 UNIX® 时间戳,即自 '1970-01-01 00:00:00’以来的秒数(和小数秒)

-- 函数:unix_timestamp
select UNIX_TIMESTAMP(datetime), UNIX_TIMESTAMP(NOW()) from user

【date_sub】

DATE_SUB()是一个函数,用于从当前日期中减去指定的时间间隔;
DATE_SUB(date, INTERVAL unit value)
DATE_SUB() 函数的基本用法:
DATE_SUB() 函数接受三个参数:日期时间值、时间间隔和时间单位。
日期时间值可以是日期类型、日期时间类型或时间戳类型。
时间间隔是一个整数,表示要减去的数量。
时间单位可以是年份 (YEAR)、月份 (MONTH)、日期 (DAY)、小时 (HOUR)、分钟 (MINUTE)、秒钟 (SECOND) 等等。
返回计算后的日期时间值。
参考地址:https://www.jianshu.com/p/47783a06526f

-- 函数: date_sub
-- 1、从日期上减去指定的天数,这里减去7天后的日期
-- SELECT date_sub(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 7 day)
-- 2、从日期上减去指定小时数, 这里从当前时间减去12个小时
-- SELECT date_sub(Now(), interval 12 HOUR)
-- 3、从日期上减去指定分钟,这里从当前日期减去60分钟
-- SELECT date_sub(Now(), interval 60 MINUTE)
-- 4、从日期上减去指定年, 这里从当前日期减去1年
-- SELECT date_sub(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 1 YEAR)
-- 5、从日期上减去指定月,
-- SELECT date_sub(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 1 MONTH)

【date_add】

DATE_ADD() 函数是用于在日期时间值上添加指定的时间间隔的函数。
它可以根据你的需求,在日期或日期时间字段中增加年、月、日、小时、分钟或秒钟等时间单位。

-- 函数: date_add
-- 1、从日期上加指定的天数,这里添加7天后的日期
-- SELECT date_add(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 7 day)
-- 2、从日期上加指定小时数, 这里从当前时间加12个小时
-- SELECT date_add(Now(), interval 12 HOUR)
-- 3、从日期上加指定分钟,这里从当前日期加上60分钟
-- SELECT date_add(Now(), interval 60 MINUTE)
-- 4、从日期上加指定年, 这里从当前日期加1年
-- SELECT date_add(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 1 YEAR)
-- 5、从日期上加指定月
-- SELECT date_add(DATE_FORMAT(Now(), "%Y-%m-%d"), interval 1 MONTH)

【NOW()】

NOW() 函数返回的是当前时间的年月日时分秒

-- 函数: NOW() 
-- 返回格式如:2024-02-21 14:31:45
SELECT NOW() FROM user;

【curdate】

返回当前年月日信息

-- 函数:curdate
SELECT curdate(); #2024-02-21

【curtime】

返回当前的时分秒信息

-- 函数:CURTIME()
select CURTIME(); #17:56:39

【datediff】

DATEDIFF函数用于返回两个日期的天数
格式:DATEDIFF(date1,date2)
DATEDIFF函数返回date1 - date2的计算结果,date1和date2两个参数需是有效的日期或日期时间值;
如果参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算)
参考文档:https://blog.csdn.net/Hudas/article/details/124466093

-- 函数:DATEDIFF(expr1,expr2)
-- SELECT NOW(), datetime, DATEDIFF(NOW(), datetime) as date_diff from user
SELECT DATEDIFF('2024-04-30 13:00:00','2024-04-29 14:00:00');

【timediff】

返回两个时间相减得到的差值,time1-time2
语法:timediff(time1,time2)

-- 函数:TIMEDIFF(expr1,expr2)
-- 返回格式:02:32:55, 必须是有效日期时间格式
-- SELECT NOW(), datetime, TIMEDIFF(NOW(), datetime) as time_diff from user
SELECT TIMEDIFF('2024-02-21 00:00:00', '2024-02-20 00:00:00');

【timestampdiff】

返回(时间2-时间1)的时间差,结果单位由interval参数给出。
语法:timestampdiff(interval, datetime1,datetime2)
参考文档:https://blog.csdn.net/goodboxs/article/details/122545490
注意:MySQL 5.6之后才支持毫秒的记录和计算,如果是之前的版本,最好是在数据库除datetime类型之外的字段,再建立用于存储毫秒的int字段,然后自己进行转换计算。

-- 函数:timestampdiff
SELECT TIMESTAMPDIFF(SECOND,'2024-2-19','2024-2-20');  # 86400秒
SELECT TIMESTAMPDIFF(MINUTE,'2024-2-19','2024-2-20');  # 1440分钟
SELECT TIMESTAMPDIFF(HOUR,'2024-2-19','2024-2-20');    # 24小时
SELECT TIMESTAMPDIFF(DAY,'2024-1-19','2024-2-20');     # 32天
SELECT TIMESTAMPDIFF(WEEK,'2024-1-19','2024-2-20');    # 4周
SELECT TIMESTAMPDIFF(MONTH,'2024-1-19','2024-2-20');   # 1个月
SELECT TIMESTAMPDIFF(QUARTER,'2023-1-19','2024-2-20'); # 4个季度
SELECT TIMESTAMPDIFF(YEAR,'2023-1-19','2024-2-20');    # 1年

字符串相关


【upper】

SQL UPPER 函数 以大写形式显示结构化查询语言中的所有字符串字符。它将小字符或一组小字符转换为大写字母。

-- 函数: upper
select id, upper(username), password, IFNULL(city, '暂无省份') 
from user

【lower】

SQL LOWER 函数 以大写形式显示结构化查询语言中的所有字符串字符。它将小字符或一组小字符转换为大写字母。

-- 函数: LOWER(str)
select id, lower(username), password, IFNULL(city, '暂无省份') 
from user

【concat】

CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。

-- 函数: concat
-- 注意: 这里当city或area为null值时将返回null字符串
-- SELECT  concat(username, password) as userpass, concat(city, area) as address from user
-- 解决方案:使用上面的ifnull来设置为空值
SELECT  concat(username, password) as userpass, concat(ifnull(city, ""), ifnull(area, "")) as address from user

【concat_ws】

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意: 如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。

-- 函数:CONCAT_WS(separator,str1,str2,...)
SELECT  concat_ws(':', username, password) as userpass, 
concat_ws("-", city, area) as address from user

【group_concat】

Group_concat() 函数 将一个分组中的指定元素(列或表达式)的值,拼接成一个字符串返回(用逗号分隔)
完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
参考地址:https://blog.csdn.net/weixin_46484674/article/details/126662192

-- 函数: grup_concat
-- SELECT city, GROUP_CONCAT(area) as area_list
-- from user
-- where city='四川'-- 1、查询city=四川的用户和密码
SELECT city, GROUP_CONCAT(CONCAT_WS( '-', username, password) order by username DESC SEPARATOR ' / ') as user_list
from user
where city='四川'

【repeat】

用来复制字符串,如下’ab’表示要复制的字符串,2表示复制的份数

-- 函数: repeat
-- select REPEAT(city,5) as repeat_city from user

【substring_index】

字符串截取,格式:substring_index(str,delim,count)
注释:str:要处理的字符串;delm:分隔符;count:计数
参考文档:https://blog.csdn.net/belief_009/article/details/123680354

-- 函数:SUBSTRING_INDEX(str,delim,count)
-- 1、正数值从左到右返回
-- select substring_index(username, ".", 1) from user where username = 'www.xlc.cn'
-- 2、负数值从右到左返回
select substring_index(username, ".", -1) from user where username = 'www.xlc.cn'

【substring】

substring 函数是用来截取字符串中的一部分字符

-- 函数:substring
-- 1、这里的值取中文和英文数值一样;
-- 从city里第1位开始取2个字符,从username中第3位开始,取3个字符(这里的3包括第三个字符,开始值从1,不是从0开始计算)
select substring(city, 1, 2), substring(username, 3, 3) from user

其它


【CAST 】

CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型
CAST(value AS datatype)
AS关键字用于分隔两个参数,在AS之前的是要处理的数据,在AS之后的是要转换的数据类型
datatype格式如下:
1、DATE 将value转换成’YYYY-MM-DD’格式
2、DATETIME 将value转换成’YYYY-MM-DD HH:MM:SS’格式
3、TIME 将value转换成’HH:MM:SS’格式
4、CHAR 将value转换成CHAR(固定长度的字符串)格式
5、SIGNED 将value转换成INT(有符号的整数)格式
6、UNSIGNED 将value转换成INT(无符号的整数)格式
7、DECIMAL 将value转换成FLOAT(浮点数)格式
8、BINARY 将value转换成二进制格式
参考文档:https://blog.csdn.net/Hudas/article/details/124399908

-- 函数:CAST
-- 1.将值转换为DATE数据类型
-- SELECT CAST('2024-02-21' AS DATE); #2024-02-21 将日期字符串 转化成 date格式
-- SELECT CAST(NOW() AS DATE);  #2024-02-21 将NOW()返回的年月日 时分钞格式转化成日期格式-- 2.将值转换为DATETIME数据类型
-- SELECT CAST('2024-02-21' AS DATETIME);  #2024-02-21 00:00:00-- 3.将值转换为TIME数据类型
-- SELECT CAST('21:25:10' AS TIME); #14:06:10
-- SELECT CAST('2024-04-27 14:06:10' AS TIME);  #14:06:10-- 4.将值转换为CHAR数据类型
-- SELECT CAST(150 AS CHAR); 
-- SELECT CONCAT('Hello World ',CAST(437 AS CHAR));-- 5.将值转换为SIGNED数据类型
-- SELECT CAST('5.0' AS SIGNED); #5
-- SELECT (1 + CAST('3' AS SIGNED))/2; #2.0000
-- SELECT CAST(5-10 AS SIGNED); #-5
-- SELECT CAST(6.4 AS SIGNED);  #6四舍五入
-- SELECT CAST(6.5 AS SIGNED);  #7四舍五入
-- SELECT CAST(-6.5 AS SIGNED); #-7-- 6.将值转换为UNSIGNED数据类型
-- SELECT CAST('5.0' AS UNSIGNED); #5
-- SELECT CAST(6.4 AS UNSIGNED);   #6
-- SELECT CAST(-6.4 AS UNSIGNED);  #0
-- SELECT CAST(6.5 AS UNSIGNED);   #7
-- SELECT CAST(-6.5 AS UNSIGNED);  #0--  7.将值转换为DECIMAL数据类型
-- SELECT CAST('9.0' AS DECIMAL); #9
-- -- DECIMAL(数值精度,小数点保留长度)
-- -- DECIMAL(10,2)可以存储最多具有8位整数和2位小数的数字
-- -- 精度与小数位数分别为10与2
-- -- 精度是总的数字位数,包括小数点左边和右边位数的总和小数位数是小数点右边的位数
-- SELECT CAST('9.5' AS DECIMAL(10,2)); #9.50
-- SELECT CAST('1234567890.123' AS DECIMAL(10,2)); #99999999.99
-- SELECT CAST('220.23211231' AS DECIMAL(10, 3));  #220.232
-- SELECT CAST(220.23211231 AS DECIMAL(10, 3));    #220.232

【round】

在mysql中,round函数用于数据的四舍五入,它有两种形式:
1、round(x,d) ,x指要处理的数,d是指保留几位小数
这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
2、round(x),其实就是round(x,0),也就是默认d为0;

-- 函数:ROUND
select round(1123.26723,2);  #1123.27
select round(1123.26723,1);  #1123.3(小数四舍五入)
select round(1123.26723,0);  #1123
select round(1123.26723,-1); #1120(-1位用0补充)
select round(1123.26723,-2); #1100(-1位用0补充)
select round(1123.26723); #1123

【coalesce】

COALESCE是一个函数, (expression_1, expression_2, …,expression_n)依次参考各参数表达式,
遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。
使用COALESCE在于大部分包含空值的表达式最终将返回空值。

-- 函数:coalesce
--  SELECT * from user
-- 1、当city值为null时返回第二个参数,注意:这里不是指存储的为"null"字符串
-- select id, username, password, COALESCE(city,"暂无") as city from user-- 2、当city不为null,那么无论area是否为null,都将返回city的真实值(因为city是第一个参数)
--    当city为null,而area不为null的时候,返回area的真实值。
--    当city和area均为null的时候,将返回“暂无”。
select id, username, password, COALESCE(city, area, "暂无") as city, area from user

【case when】

用法:1:case 字段名 when 字段值 then 值1 else 值2 end
这一种是之前比较常用的一种方式,相当于是大部分编程语言中的switch case的用法,
通过字段名,去匹配字段值,适合字段值比较固定的情况下使用,特点是比较简洁易用。

-- 3、统计score 小于60分人数和大于60分人数,求不合格的平均分数和合格的平均分数
select 
count(case when score >=0 and score<=59 then 1 end) as user_count_0_59,
count(case when score >=60 then 1 end) as user_count_60_100,
AVG(case when score >=0 and  score<=59 then scorewhen score >=60 and score<=100 then scoreelse nullend 
) as average_score_0_59,
AVG(case when score >=60 and score<=100 then scoreelse nullend 
) as average_score_60_100
from user-- 4、需求:ID=1、5、6用户score设置为0,其它ID使用正常score值
-- SELECT id, username,
-- (case 
--  when id in(1, 5, 6) then 0
--  else score 
--  end ) as score
-- from user

【ifnull()】

在mysql中IFNULL() 函数用于判断第一个表达式是否为 NULL,如果第一个值不为NULL就执行第一个值。第一个值为 NULL 则返回第二个参数的值。
如果a不为空,则返回a,如果a为空(就是查找不到的意思),就返回b

-- 函数:isnull
select id, username, password, IFNULL(city, '暂无省份')
from user

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

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

相关文章

【Java前端技术栈】模块化编程

一、基本介绍 1.基本介绍 1 传统非模块化开发有如下的缺点&#xff1a;(1)命名冲突 (2)文件依赖 2 Javascript 代码越来越庞大&#xff0c;Javascript 引入模块化编程&#xff0c;开发者只需要实现核心的业务逻辑&#xff0c;其他都可以加载别人已经写好的模块 3 Javascrip…

torch.utils.data

整体架构 平时使用 pytorch 加载数据时大概是这样的&#xff1a; import numpy as np from torch.utils.data import Dataset, DataLoaderclass ExampleDataset(Dataset):def __init__(self):self.data [1, 2, 3, 4, 5]def __getitem__(self, idx):return self.data[idx]def…

第2.2章 StarRocks表设计——排序键和数据模型

该篇文章介绍StarRocks-2.5.4版本的数据模型相关内容&#xff0c;有误请指出~ 目录 一、数据模型概述 1.1 四种模型 1.2 排序键 1.2.1 概述 1.2.2 分类 1.2.3 注意事项 二、明细模型 2.1 概述 2.2 适用场景 2.3 建表语句及说明 三、聚合模型 3.1 概述 3.2 适用场…

网络入门基础

本专栏内容为&#xff1a;Linux学习专栏&#xff0c;分为系统和网络两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握Linux。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;网络 &#x1f69a;代码仓库&#xff1a;小小unicorn的代…

[AIGC] JVM内存结构中的方法区主要存储哪些信息?

在JVM的内存结构中&#xff0c;方法区&#xff08;Method Area&#xff09;被视为JVM的永久代。它主要负责存储已经被虚拟机加载的类信息、常量、静态变量以及编译器编译后的代码等数据。具体可以分为以下几个部分&#xff1a; 类信息 这部分信息包括类数据&#xff08;如类名…

32FLASH闪存

目录 一&#xff0e;FLASH简介 二&#xff0e;代码实现 &#xff08;1&#xff09;读写内部FLASH &#xff08;2&#xff09;读取芯片ID 一&#xff0e;FLASH简介 存储器地址要记得累 系统存储器是原厂写入的Bootloader程序&#xff08;用于串口下载&#xff09;&#xff0…

04.结构体和结构体数组

1.结构体 struct stu{int id;string name;float grade; };2.结构体数组的排序 sort算法如果是非自定义类型可以缺省&#xff0c;默认升序排序&#xff0c;但自定义类型必须自己重写比较规则&#xff0c;因为系统没法知道你怎么比较 sort(首元素地址&#xff0c;尾元素下一位…

Python 写网络监控

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 网络监控是保障网络可靠性的一项重要任务。通过实时监控网络性能&#xff0c;我们可以及时发现异常&#xff0c;迅速采取措施&#xff0c;保障网络畅通无阻。本文将以 Python为工具&…

Debug系列 GroupNorm和BatchNorm出现Nan或inf的情况

Debug系列 GroupNorm和BatchNorm出现Nan或inf的情况 前言这两个函数做了什么可能出现的问题解决方法train和evalbatchsize或channel设置过小可训练参数的问题数值溢出其它的方法 前言 在复现别人论文的实验结果时&#xff0c;按照README乖乖做完之后&#xff0c;却发现损失函数…

Windows / Linux dir 命令

Windows / Linux dir 命令 1. dir2. dir *.* > data.txt3. dir - list directory contentsReferences 1. dir 显示目录的文件和子目录的列表。 Microsoft Windows [版本 10.0.18363.900] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\cheng>dir驱动器 C 中…

线性代数:向量组的秩

目录 回顾“秩” 及 向量组线性表示 相关特性 向量组的秩 例1 例2 矩阵的“秩” 及 向量组线性表示 相关特性 向量组的秩 例1 例2

@Async引发的spring循环依赖的问题,

今天发现一个很有意思的问题&#xff0c;正常解决项目中产生的循环依赖&#xff0c;是找出今天添加的注入代码&#xff0c;然后一个个加lazy试过去&#xff0c;会涉及到类中新增的注入 但是今天修改了某个serviceimpl的方法&#xff0c;加入了Async方法后 就发生循环依赖了 ai…

【职场经验】关于自动化用例设计的思考

为什么要设计用例&#xff1f; 作为质量保证(QA)人员&#xff0c;设计测试用例的重要性不亚于开发人员编写技术实现方案。如果实现方案设计不周&#xff0c;编码阶段将可能遇到许多问题&#xff1b;同理&#xff0c;如果我们未能设计测试用例&#xff0c;产品质量就难以得到充…

如何实现一个K8S DevicePlugin?

什么是device plugin k8s允许限制容器对资源的使用&#xff0c;比如CPU和内存&#xff0c;并以此作为调度的依据。 当其他非官方支持的设备类型需要参与到k8s的工作流程中时&#xff0c;就需要实现一个device plugin。 Kubernetes提供了一个设备插件框架&#xff0c;你可以用…

机器视觉系统选型-为什么还要选用工业光源控制器

工业光源控制器最主要的用途是给光源供电&#xff0c;实现光源的正常工作。 1.开关电源启动时&#xff0c;电压是具有波浪的不稳定电压&#xff0c;其瞬间峰值电压超过了LED灯的耐压值&#xff0c;灯珠在多次高压冲击下严重降低了使用寿命&#xff1b; 2.使用专用的光源控制器&…

【算法学习】搜索算法之深度优先搜索

深度优先搜索 DFS 1.算法介绍 深度优先搜索(DFS)算法是一种用于遍历或搜索树或图的算法。它的基本思想是尽可能深地搜索图的分支,直到到达叶节点或无法再深入为止,然后回溯到前一个节点,继续探索其他分支。这种搜索策略可以确保图中的每个节点都被访问到,除非它是一个环。…

inBuilder低代码平台新特性推荐-第十六期

各位友友们&#xff0c;大家好~今天来给大家介绍一下inBuilder低代码平台社区版中的系列特性之一 —— 构件热加载&#xff01; 01 概述 构件热加载指的是&#xff1a;构件代码修改后&#xff0c;无需重启应用&#xff0c;通过WebIDE的部署或发布工程后&#xff0c;即可正常调…

08-静态pod(了解即可,不重要)

我们都知道&#xff0c;pod是kubelet创建的&#xff0c;那么创建的流程是什么呐&#xff1f; 此时我们需要了解我们k8s中config.yaml配置文件了&#xff1b; 他的存放路径&#xff1a;【/var/lib/kubelet/config.yaml】 一、查看静态pod的路径 [rootk8s231 ~]# vim /var/lib…

代码的复用——Mixin使用例子

Mixin&#xff08;混入&#xff09;是一种在Sass和Vue.js等框架中常用的技术&#xff0c;用于分发和重用代码。以下是Sass和Vue.js中Mixin的使用举例。 在Sass中&#xff0c;Mixin允许你定义可以在整个样式表中重复使用的样式。以下是一个Sass中Mixin的使用例子&#xff1a; …

华为配置直连三层组网直接转发示例

华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…