日期类函数
1.返回系统当前日期及年,月,日,时,分,秒分项
select getdate() as 当前日期,
year(getdate()) as 年,
month(getdate()) as 月,
day(getdate()) as 日,
datename(Hh,getdate())as 时,
datename(Mi,getdate())as 分,
datename(Ss,getdate())as 秒
-
Datepart():返回代表指定日期的指定日期部分的整数
语法:Datepart(datepart,date) 返回类型:int -
DateName():返回代表指定日期的指定日期部分的字符串
语法:DateName(datepart,date) 返回类型:nvarchar
2.返回毕业距今相差星期数
SELECT datediff(wk,'2018-06-6 10:10',GETDATE()) 星期数
3.查看当前日期对应星期几?
select datename(dw,getdate()) 星期
串型函数
1.取子串应用
DECLARE @StringTest char(10)
SET @StringTest='Robin'
SELECT LEFT(@StringTest,3) /*从字符串左边取3个字符*/
2.将一个数据转成串操作
--STR(f/d):数据转换成字符串
SELECT 'A'+82 --报错 varchar 值 'A' 转换成数据类型 int 时失败。
SELECT 'A'+STR(82) --A 82 中间有空格
SELECT 'A'+LTRIM(STR(82)) --A82 LTRIM函数清除字符串前后的空格
3.将指定的字符串的字符排列顺序颠倒操作 REVERSE()
select reverse('abc') -- cba
4.子串替代操作 STUFF()
select stuff('abcdaaa',1,5,'x') --xaa 从第一个字符开始 到第五个字符 替换成x
类型转换函数
1.将一数值与一个串型对象连接起来
DECLARE @StringTest char(10), @IntTest int
SET @StringTest='数据库成绩:'
SET @IntTest =90
SELECT LEFT(@StringTest+cast(@IntTest as char(4)),7) as 考试成绩
2.将本人生日处理成一个串输出,取日期元素2方式:datename(),datepart()
--如:2014年10月27日15时39分……
DECLARE @WhatsTheDay datetime,@currentDay datetime
SET @WhatsTheDay='2000-5-1 10:00:00'
set @currentDay=getdate()
SELECT
CONVERT(char(4),DATEPART(yyyy,@WhatsTheDay) )+'年'+
CONVERT(char(2),DATEPART(mm,@WhatsTheDay) )+'月'+
CONVERT(varchar(2),DATEPART(dd,@WhatsTheDay))+'日'+
convert(varchar(2),datepart(hh,@WhatsTheDay))+' 时'+
convert(varchar(2),datepart(mi,@WhatsTheDay))+' 分'+
convert(varchar(2),datepart(ss,@WhatsTheDay))+' 秒' 生日
--2000年5 月1日10 时0 分0 秒
简单编程应用
1.求水仙花数
declare @b int ,@s int , @g int ,@n int ,@i int
set @i=100
while(@i<1000)
begin
set @b = @i / 100;
set @s = @i/10%10;
set @g = @i % 10;
if (@i=@b*@b*@b+@s*@s*@s+@g*@g*@g)
begin
print(@i)
end
set @i=@i+1
end
--153 370 371 407
求1+2+。。。+100和值
declare @S smallint,@I smallint,@NUMS smallint
set @S=0 --总和
set @I=1 --从1开始
set @NUMS=0 --个数默认为0个
while(@I<=100) --循环
begin
set @S=@S+@I --总和 --当@I某个数符合时,就是加它,即得这些数的总和
set @NUMS=@NUMS+1 --如果条件符合个数就自动加班
set @I=@I+1 --循环加值
end
print @S --输出总和 5050