一. 日期时间函数
二. 字符函数
三.系统函数
/*
datepart:
MS MilliSecond
SS,S Second
MI,N Minute
HH Hour
DW,W Weekday
WK,WW Week
DD,D Day
DY,Y Day of Year
MM,N Month
QQ,Q Quarter
YY,YYYY Year
*/
--dateadd(datepart, number, date)添加或减少一个时间值
SELECT DATEADD(HH,2,GETDATE())--在当前时间上加两个小时
SELECT DATEADD(MS,-2000,GETDATE())--在当前时间上减2000毫秒
--datediff(datepart, startdate, enddate)计算两个时间之间的差,若为负说明
--enddate早于startdate
SELECT DATEDIFF(HH,GETDATE(),GETDATE()-1) --(-24)
--datename(datepart, datetoinspect)返回日期中名称的部分
SELECT DATENAME(DW,GETDATE()) --获得当前时间的月份部分(Monday)
--datepart(datepart, datetoinspect)从日期中返回部分日期
SELECT DATEPART(DW,GETDATE()) --结果为2(即星期一)
--getdate()
SELECT GETDATE() -- 获得当前日期和时间
二. 字符函数
--ASCII() 将单个字符转换成相应的ASCII码,多个字符则返回第一个
SELECT ASCII('a') --97
--CHAR()将数字转换成字符,与ASCII相反,数字若大于255,返回NULL
SELECT CHAR(100) --d
--LEFT(str,n)返回字符串最左边的n个字符
SELECT LEFT('aEdsas',3) --aEd
--LOWER(str)将字符串转化为小写
SELECT LOWER('AdDREsS') --address
--LTRIM(str)清除字符串左边的空格
SELECT LTRIM(' att ') + 'ab' --att ab
--RIGHT(str,n)返回字符串最右边的n个字符
SELECT RIGHT('aEdsas',3) --sas
--RTRIM(str)清除字符串右边的空格
SELECT 'ab' + RTRIM(' att ') + 'ab' --ab attab
--STR(88)将数值转化为可变化字符串
SELECT 'A' + LTRIM(STR(88)) --A88
--SUBSTRING(str, startPosition, n) 从startPosition开始截取n个字符
--串,position从1开始
SELECT SUBSTRING('ABCDEFG',2,3) --BCD
--UPPER(str)转大写
SELECT UPPER('aBcDeFg') --ABCDEFG
三.系统函数
--CASE WHEN... THEN... ELSE...END 对条件进行测试
SELECT CASE WHEN FLOOR(RAND(10)*10)=1 THEN 'A'
WHEN FLOOR(RAND(10)*10)=7 THEN 'B'
ELSE 'C' END
--CAST() / CONVERT()从一种数据类型转化为另一种数据类型,CONVERT更强
--数字与十进制之间转换使用CAST,否则将丢失精度
SELECT CAST(11 as VARCHAR(2))
SELECT CONVERT(VARCHAR(2),11)
--ISDATE()是否是一个有效的日期,1为true, 0为false
SELECT ISDATE(GETDATE())
SELECT ISDATE(1)
--ISNULL(value2test, if_null_value)
--测试value2test是否为null,若为null则使用if_null_value值
SELECT ISNULL(NULL,'a') --a
--ISNUMERIC(value)测试是否为数字,是返回1或true
SELECT ISNUMERIC('a') --0