SQL Server(第二章) 字符串函数、日期时间函数、转换函数

--1.CONCAT 函数:字符串连接(支持sql server2012 SQL规则 如果与NULL连接返回NILL)
SELECT empid,CONCAT(firstname,lastname) AS fullname
FROM HR.Employees
--sql server2012版本以下用 “+”号即可取代
SELECT empid,firstname + N' ' + lastname AS fullname
FROM HR.Employees

empid       fullname
----------- ------------------------------
1           Sara Davis
2           Don Funk
3           Judy Lew
4           Yael Peled
5           Sven Buck
6           Paul Suurs
7           Russell King
8           Maria Cameron
9           Zoya Dolgopyatova

--2.SUBSTRING 函数:可以从字符串中抽取一个子字符串
SELECT SUBSTRING('ABCDEFG',3,3) 
------
CDE

--3.LEFT和RIGHT 函数:可以从字符串的左边或右边提取自定长度的子字符串
SELECT LEFT('ABCDEFG',3)
------
ABC
SELECT RIGHT('ABCDEFG',3)
------
EFG

--4.LEN 函数:返回字符串中的字符数
SELECT LEN(N'ABCDE ')
-----------
5

--5.DATALENGTH 函数:返回字符串中的字节数
SELECT DATALENGTH(N'ABCDE ')
-----------
12

--两者另外一个区别就上LEN删除尾随的空格符,DATALENGTH不会

--6.CHARINDEX 函数:返回子字符串在字符串中第一次出现的位置
SELECT CHARINDEX('w',N'hello world')
-----------
7

--7.PATINDEX 函数:返回子字符串在字符串中第一次出现的位置
SELECT PATINDEX('%[0-9]%',N'abcd1234efgh')
-----------
5

--8.REPLACE 函数:使用另一个字符串替换出现的所有子字符串
SELECT REPLACE('1-a 2-b','-',':')
------------------------------
1:a 2:b

--9.REPLICATE 函数:按照指定的次数,复制指定次数的字符串
SELECT REPLICATE('abcd ',3)
---------------
abcd abcd abcd 

--10.STUFF 函数:从字符串中移除指定数量的字符,并插入一个替代的新子字符串
SELECT STUFF('xyz ',2,1,'abc')
------
xabcz 

--11.UPPER和LOWER 函数:将一个字符串转换成大写或小写
SELECT UPPER('xyzs ')
----------
XYZS 

SELECT LOWER('ABCD ')
----------
abcd 

--12.RTRIM和LTRIM 函数:删除字符串右边空格符,和删除字符串左边空格符
SELECT RTRIM(' ABCD ')
------
 ABCD

SELECT LTRIM(' ABCD ')
------
ABCD 

--13.RTRIM和LTRIM 函数:删除字符串右边空格符,和删除字符串左边空格符
SELECT RTRIM(' ABCD ')
------
 ABCD

SELECT LTRIM(' ABCD ')
------
ABCD 

--14-1.GETDATE 函数:当前日期和时间
SELECT GETDATE();
-----------------------
2018-01-04 22:25:14.543

--14-2.CURRENT_TIMESTAMP 函数:等同于GETDATE,但是遵从ANSI SQL
SELECT CURRENT_TIMESTAMP;
-----------------------
2018-01-04 22:25:53.510

--14-3.GETUTCDATE 函数:当前UTC日期和时间(通用协调时间)
SELECT GETUTCDATE();
-----------------------
2018-01-04 14:25:53.510

--14-4.SYSDATETIME 函数:当前日期和时间
SELECT SYSDATETIME();
----------------------
2018-01-04 22:25:53.51

--14-5.SYSUTCDATETIME 函数:当前UTC日期和时间(通用协调时间)
SELECT SYSUTCDATETIME();
----------------------
2018-01-04 14:26:56.56

--14-6.SYSDATETIMEOFFSET 函数:包含时区偏移量的当前日期时间
SELECT SYSDATETIMEOFFSET();
----------------------------------
2018-01-04 22:26:56.5667693 +08:00

--15.CAST、CONVERT、PARSE 函数:日期时间日期时间转换函数
SELECT CAST('20180104' AS DATETIME);
SELECT CONVERT(DATETIME,'20180104');
SELECT PARSE('20180104' AS DATETIME); --SQL SERVER 2008版本不支持
-----------------------
2018-01-04 00:00:00.000

--SQL SERVER 2012才支持TRY_CAST、TRY_CONVERT、TRY_PARSE

--16.SWITCHOFFSET 函数:将DATETIMEOFFSET值调整为指定的时区
SELECT SYSDATETIMEOFFSET();
----------------------------------
2018-01-04 22:27:38.5611713 +08:00

SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(),'-03:00');
----------------------------------
2018-01-04 11:27:38.5611713 -03:00

SELECT SWITCHOFFSET('20:00:00',10);
----------------------------------
1900-01-01 20:10:00.0000000 +00:10

SELECT SWITCHOFFSET('20180104',100);
----------------------------------
2018-01-04 01:40:00.0000000 +01:40

--17.DATEADD 函数:为指定日期时间增加指定输入的年/月/日/时/分/秒等
SELECT DATEADD(YEAR,1,'20180104');
-----------------------
2019-01-04 00:00:00.000

--18.DATEDIFF 函数:获得两个日期时间值之间的差异,第一个参数可以是年/月/日/时/分/秒等
SELECT DATEDIFF(DAY,'20170101','20170111');
-----------
10

--19.DATEPART 函数:返回一个表示所请求日期时间部分的整数
SELECT DATEPART(YEAR,'20170101');
-----------
2017

--20.YEAR、MONTH、DAY 函数:取日期中的 年、月、日
SELECT YEAR('20170101');
-----------
2017

SELECT MONTH('20170101');
-----------
1

SELECT DAY('20170101');
-----------
1

--21.DATENAME 函数:取日期中的 年、月、日字符串(根据会话语言决定)
SELECT DATENAME(MONTH,'20170101');
------------------------------
01

--21.ISDATE 函数:判断字符串是否能转换成日期格式,可以转换返回1,不可以转换返回0
SELECT ISDATE('20170101');
-----------
1

SELECT ISDATE('201701011');
-----------
0

纯属个人笔记,如有问题大家可以一起沟通。

原文地址:https://www.cnblogs.com/tiaoma888/p/8196389.html