首页 > 数据库 >【SQL Server】超详细SQLServer日期转换、字符串、数学、聚合等常用函数大全(最新版)

【SQL Server】超详细SQLServer日期转换、字符串、数学、聚合等常用函数大全(最新版)

时间:2024-03-18 22:32:17浏览次数:29  
标签:-- expr SQLServer Server select 字符串 最新版 SELECT GETDATE

文章目录

一、字符串函数

1、获取uuid

SELECT NEWID(); -- 9573749E-5942-4178-907C-6B39E74EDAA0 
-- ( 无参数,返回一个GUID(全局唯一表示符)值 ) 

2、字符串截取

SELECT LEN('java'); -- 4 
-- (LEN(expression) 返回字符串包含字符数)

SELECT SUBSTRING('java',1,2); -- ja 
-- (SUBSTRING(expression, start, length) 截取字符串expression,下标从start开始,截取长度为length)

SELECT RIGHT('java',3); -- ava 
-- (RIGHT(char_expr,int_expr) 返回字符串char_expr右边int_expr个字符)

SELECT LEFT('java', 2); -- ja 
-- (LEFT(char_expr,int_expr) 返回字符串char_expr左边边int_expr个字符)

3、字符串拼接

SELECT CONCAT('ja','va'); -- java (CONCAT(char1,char2,...) 用于字符串拼接)

SELECT 'ja' + 'va'; -- java ( + 也用于字符串拼接)

SELECT 'ja' + SPACE(2) + 'va'; -- ja  va (SPACE(int_expr) 生成int_expr个空格)

4、字符串去空格

SELECT TRIM( 'j' from 'java'); -- ava(去除字符串两边指定的字符,默认为空格)

SELECT LTRIM(' java'); -- java (LTRIM(char_expr) 去除字符串char_expr左边的空格)

SELECT RTRIM('java '); -- java (RTRIM(char_expr) 去除字符串char_expr右边的空格)

5、大小写转换

SELECT UPPER('java') -- java (UPPER(char_expr) char_expr转为大写)

SELECT LOWER('JAVA'); -- java (LOWER(char_expr) char_expr转为小写)

6、格式化数字为字符串

SELECT STR(123.454,10,2) ; -- [    123.46](不足10位前面补充空格,,精度会进行四舍五入)
-- STR(float_expression [,length [,decimal]]) 把数值型数据转换为字符型数据
-- length(可选) 指定返回的字符串的长度,如果没有提供length,默认值为10
-- decimal(可选) 指定返回的小数位数,如果没有提供decimal,默认值为10
-- 当 length 或者 decimal 为负值时,返回NULL
-- 当 length 小于小数点左边(包括符号位)的位数时,返回length 个*
-- 先服从length ,再取decimal ;
-- 当返回的字符串位数小于length ,左边补足空格

7、字符串替换、转换

select REPLACE('java', 'a', 'b'); -- jbvb (REPLACE(expression, find_string, replace_with) 在字符串中替换所有出现的指定子串)

select REPLICATE('ja',3); -- jajaja (REPLICATE(char_expr,int_expr) 复制字符串int_expr次)

select REVERSE('java'); -- avaj (REVERSE(char_expr) 反转字符串)

select STUFF('java',1,2,'cc');
-- ccva ( STUFF(char_expr1,start,length,char_expr2)  )
-- 将字符串char_expr1中的从start开始的length个字符用char_expr2代替,start下标从1开始
-- ASCII值与字符转换

select ASCII('A'); -- 65 (ASCII(char) 取ascii码)

select CHAR(97); -- a (CHAR(ascii) 将ASCII 码转换为字符)

8、查找与定位

select CHARINDEX('a','java'); -- 2 (CHARINDEX(char_expr,expression) 返回char_expr的起始位置,下标从1开始)

select PATINDEX('%v%','java'); -- 3 (PATINDEX('%pattern%',expression) 返回指定模式的起始位置,否则为0)

9、ISNULL 判空取值

select ISNULL(null,'1'); -- 1
select ISNULL('2','1'); -- 2
-- ( ISNULL(值1,值2) 如果值1不为NULL,则返回它的值;否则,在将任意表达式2的类型转换为值1的类型(如果这两个类型不同)后,返回值2的值 )

二、日期时间函数

1、获取当前日期和时间

select GETDATE(); --  2024-03-16 15:38:54.403 (返回日期)

2、提取日期部分

select DAY(GETDATE()); -- 16 (取出天)

select MONTH(GETDATE()); -- 3 (取出月)

select YEAR(GETDATE()); -- 2024 (取出年)

3、DATENAME(datepart,date_expr) 函数,返回指定日期的指定部分,返回字符串。获取年、月、日、星期、周数、时、分、秒

SELECT DATENAME(YEAR,GETDATE()); -- 2024 (年)

SELECT DATENAME(MONTH,GETDATE()); -- March (月)

SELECT DATENAME(DAY,GETDATE()); -- 16 (日)

SELECT DATENAME(HOUR,GETDATE()); -- 15 (时)

SELECT DATENAME(MINUTE,GETDATE()); -- 53 (分)

SELECT DATENAME(SECOND,GETDATE()); -- 3 (秒)

SELECT DATENAME(WEEKDAY,GETDATE()); -- Saturday (星期)

SELECT DATENAME(QUARTER,GETDATE()); -- 1 (第几季度)

SELECT DATENAME(WEEK,GETDATE()); -- 11 (一年中的第几周)

SELECT DATENAME(DAYOFYEAR,GETDATE()); -- 76 (一年中的第几天)

4、DATEPART(datepart,date_expr) 函数,用于返回日期/时间的单独部分,返回整数。获取年、月、日、小时、分钟

SELECT DATEPART(YY,GETDATE()); -- 2024 (年)

SELECT DATEPART(mm,GETDATE()); -- 3 (月)

SELECT DATEPART(dd,GETDATE()); -- 16 (日)

5、DATEDIFF(datepart,date_expr1.dateexpr2) 函数,返回两个指定日期之间间隔的时间

SELECT DATEDIFF(YEAR,'2023-01-01' ,GETDATE()); -- 1 (间隔时间/年)

SELECT DATEDIFF(MONTH,'2024-01-01' ,GETDATE()); -- 2 (间隔时间/月)

SELECT DATEDIFF(DAY,'2024-01-01',GETDATE()); -- 75 (间隔时间/天)

SELECT DATEDIFF(DAY,'2024-01-01','2024-01-31'); -- 30 (间隔时间/天)

6、DATEADD(datepart,number,date_expr)函数,在日期中添加或减去指定的时间间隔。年、月、日 加上 number

SELECT DATEADD(YEAR,1,GETDATE()); -- 2025-03-16 16:06:46.910 (明年今日)

SELECT DATEADD(YEAR,-1,GETDATE()); -- 2023-03-16 16:06:46.910 (去年今日)

SELECT DATEADD(MONTH,+1,GETDATE()); -- 2024-04-16 16:06:46.910 (下月今日)

SELECT DATEADD(DAY,30,GETDATE()); -- 2024-04-15 16:06:46.910 (XX天后)

7、EOMONTH(date_expr)函数,返回包含指定日期所在月份的最后一天

SELECT EOMONTH( '2024-01-01' ); -- 2024-01-31 (当月月末日期)
SELECT EOMONTH( GETDATE() ); -- 2024-03-31 (当月月末日期)

8、ISDATE 判断是否为有效日期

select ISDATE(GETDATE()); -- 1
select ISDATE('2014-03-16'); -- 1
select ISDATE('201'); -- 0
-- ( ISDATE(值1) 确定输入值1是否为有效日期或可转成有效的日期,是1,不是0 )

9、DATEFROMPARTS(year, month, day) 根据提供的年、月、日创建一个新的日期

select DATEFROMPARTS(2024, 3, 16); -- 2024-03-16 
--(DATEFROMPARTS(year, month, day) 根据提供的年、月、日创建一个新的日期)

附录1:datepart格式表格

datepart格式描述
yy, yyyy, year年 (1753-9999 年)
qq, q, quarter季度 (1-4 季度)
mm, m, month月份 (1-12 月)
dy, y年中的日 (1-366 日)
dd, d, day日 (1-31 日)
wk,ww ,week周 (1-54 周)
dw, w, weekend星期 (1-7 周几)
hh, hour小时 (0-23 小时)
mi, n, minute分钟 (0-59 分钟)
ss, s, second秒 (0-59 秒)
ms毫秒 (0-999 毫秒)

三、CONVERT类型转换函数

CONVERT(数据类型[(长度)],表达式[,样式]) – 将一种数据类型的表达式显式转换为另一种数据类型的表达式;

select CONVERT(VARCHAR(19),GETDATE()); -- Mar 17 2024  4:46AM          

select CONVERT(VARCHAR(19),GETDATE(),20);  -- 2024-03-17 04:47:11 

select CONVERT(VARCHAR(19),GETDATE(),23);  -- 2024-03-17  

select CONVERT(VARCHAR(24),GETDATE(),25);  -- 2024-03-17 04:47:31.040  

附录2:日期格式表格

格式描述
100 或者 0mon dd yyyy hh:miAM (或者 PM)
101mm/dd/yy
102yy.mm.dd
103dd/mm/yy
104dd.mm.yy
105dd-mm-yy
106dd mon yy
107Mon dd, yy
108hh:mm:ss
109 或者 9mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110mm-dd-yy
111yy/mm/dd
112yymmdd
113 或者 13dd mon yyyy hh:mm:ss:mmm(24h)
114hh:mi:ss:mmm(24h)
23yyyy-mm-dd
120 或者 20yyyy-mm-dd hh:mi:ss(24h)
121 或者 21yyyy-mm-dd hh:mi:ss.mmm(24h)
126yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130dd mon yyyy hh:mi:ss:mmmAM
131dd/mm/yy hh:mi:ss:mmmAM

四、CAST数据类型转换函数

--CAST函数用于将某种数据类型转换为另一种数据类型
--CAST(字段名 as 转换的类型 )

SELECT CAST(10.2748 as int); -- 10 (取整)

SELECT CAST(12345.123 as float); -- 12345 (取浮点数)

SELECT CAST(12345.123 as char); -- 12345.123 (转为字符串)                     

SELECT CAST('2023-12-18 15:41:25' as char(16)); -- 2023-12-18 15:41 (字符串截取)

SELECT CAST(NEWID() AS varchar(36)); -- DEEDAEB1-B32D-40D5-AE02-AFF972161B12 (随机字符串)

五、数学函数


select ABS(-123); -- 123 ( ABS(numeric_expr) 求绝对值 )

select ROUND(123.456,2); -- 123.460 ( ROUND(numeric_expr,int_expr) 安int_expr规定的精度四舍五入

select CEILING(123.45); -- 124 ( CEILING(numeric_expr) 取大于等于指定值的最小整数 )

select FLOOR(123.45); -- 123 ( FLOOR(numeric_expr) 小于等于指定值得最大整数 )

select EXP(3); -- 7.38905609893065 ( EXP(float_expr) 取指数 )

select PI(); -- 3.14159265358979 (取Π值)

select POWER(2,2); -- 4 ( POWER(numeric_expr,power) 返回power次方 )

select RAND(10); -- 0.713759689954247 ( RAND([int_expr]) 随机数产生器 )

select SIGN(-10); -- -1 ( SIGN(int_expr) 根据正数,0,负数,,返回+1,0,-1 )

select SQRT(4); -- 2 ( SQRT(float_expr) 平方根 )


select ISNUMERIC(1); -- 1
select ISNUMERIC('1'); -- 1
select ISNUMERIC('a'); --0
-- (ISNUMERIC(值1) 判断值1是否为数值类型或者是否可以转换成数值)

六、聚合函数

count()
-- 返回组中的总条数,count(*)返回组中所有条数,包括NULL值和重复值项,如果抒写表达式,则忽略空值,表达式为任意表达式。

max()
-- 返回组中的最大值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。

min()
-- 返回组中的最小值,空值将被忽略,表达式为数值表达式,字符串表达式,日期。

sum()
-- 返回组中所有值的和,空值将被忽略,表达式为数据表达式。

avg()
-- 返回组中所有值的平均值,空值将被忽略,表达式为数据表达式。

参考文献:
https://www.cnblogs.com/long6286/p/12671308.html
https://blog.csdn.net/leanne50y/article/details/134974111

希望对小伙伴们有所帮助,完结,撒花❀❀

标签:--,expr,SQLServer,Server,select,字符串,最新版,SELECT,GETDATE
From: https://blog.csdn.net/ilywq/article/details/136779370

相关文章

  • 史上最全Java核心面试题(带全部答案)2024年最新版
    今天要谈的主题是关于求职,求职是在每个技术人员的生涯中都要经历多次。对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。在跳槽季来临之前,特地做这个系列的文章,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工......
  • sql Server
    目录导出sql导出sqlwin导出;ssms操作;1:右键:2:点击下一步:3:选则是否为所有表:4:选择脚本保存位置:......
  • Jmeter性能测试 —— jmeter之使用ServerAgent监控服务器
    ServerAgent性能测试时我们关注的重要指标是:并发用户数,TPS,请求成功率,响应时间,服务器的CPU,memory,I/Odisk等。Jmeter的聚合报告可以查看并发数、吞吐量、请求成功率、响应时间等;如果要查看服务器端的CPU,memory,I/Odisk等就需要安装插件ServerAgent将ServerAgent-2.2.1.jar上传......
  • 服务器监控新利器:ServerBee带你看透服务器运行状态
    近年来,随着互联网的飞速发展,服务器已经成为企业运营中不可或缺的一部分。然而,服务器出现故障或者性能下降可能会给企业带来巨大的损失。因此,如何及时有效地监控服务器状态成为了企业管理者关注的焦点之一。今天,我将向大家介绍一款强大的服务器监控工具——ServerBee。Serv......
  • VS code常用插件推荐(最新版)
    推荐插件主要有以下几个原因:增强功能:VSCode插件可以增强编辑器的功能,如代码补全、语法高亮、代码导航等,让开发更高效。提升效率:插件可以提供快捷键、代码片段等工具,让开发者更快速地编写代码。个性化定制:插件可以根据个人喜好进行定制,选择适合自己的插件,让开发环境更符合......
  • .NET集成DeveloperSharp操作Sql Server数据库
    支持.Net/.NetCore/.NetFramework,可以部署在Docker,Windows,Linux,Mac。本文提供了一种结合“原生Sql+轻量级ORM”操作各类数据库的工具。该工具几乎只使用了一个方法/函数,却实现了几乎所有的数据操作功能。它已成功应用到了人工智能、产业互联网、智慧医疗、等多个大型项......
  • redis-server.exe 双击闪退还显示未连接
    Redis下运行cmd:D:\Redis-x64-3.0.504>redis-server.exeredis.windows.conf报错:[7672]13Mar21:29:36.738#CreatingServerTCPlisteningsocket*:6379:bind:Noerror执行客户端(可以在下载的地方双击redis-cli.exe,也可以执行命令):D:\Redis-x64-3.0.504>red......
  • VUE项目忽略ResizeObserver loop completed with undelivered notifications错误
    忽略"ResizeObserverlooplimitexceeded"和"ResizeObserverloopcompletedwithundeliverednotifications."两种错误。向vue.config.js中添加以下代码:module.exports=defineConfig({...devServer:{client:{overlay:{warnings:fa......
  • SqlServer2008(R2)(一)SqlServer2008(R2)经典宝藏操作收集整理
    一、常见操作1、TRUNCATETABLE语句删除表数据TRUNCATETABLE语句比DELET删除表中的所有行更快。从逻辑上讲,TRUNCATETABLE它类似于DELETE没有WHERE子句的语句。TRUNCATETABLE语句从表中删除所有行,但表结构及其列,约束,索引等保持不变。要删除表及其数据,可以使用该DROP......
  • SQL Server安装
    SQLServer安装下载安装包百度网盘下载链接:https://pan.baidu.com/s/1Hg74E4nXiahEz1ACztjbFA提取码:1tea官网下载安装包https://www.microsoft.com/en-us/sql-server/sql-server-downloads安装配置选择自定义安装建议安装C盘外的其他盘。安装安装好后会弹出页面......