SQL server --时间日期函数、类型转换
一、时间日期函数
1、
SET DATEFIRST 1 --设置星期一为第一天
--datepart函数,返回时间日期中的某一个部分
--参数1是指返回哪一个部分,dw表示dayofweek
--参数2是指哪个时间日期里面去返回
--datefirst是系统常量,在使用时需要加上@@
SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today'
--getdate指在执行时获取当前系统时间
SELECT GETDATE()--在执行时取当前系统时间
2、
--dateadd 对某一个部分添加或者减去多少时间
--参数1 是对哪一个部分进行添加或减少
--参数3 是在哪一个时间日期上进行增加或减少
--参数2 是增加或减去多少
select DATEADD(YEAR,-2,'2015-11-20')
select DATEADD(MONTH,3,'2015-11-20')
select DATEADD(DAY,5,'2015-11-20')
3、
--datediff 算时间差 different 不同的,相差的
--参数1 是指对哪一个部分进行算法
--参数2 是开始的时间日期
--参数3 是结束的日期
select DATEDIFF(YEAR,'2011-1-2','2015-2-2') --年份相差
select DATEDIFF(MONTH,'2011-1-2','2015-2-2')--月份相差(算上中间所有月份)
select DATEDIFF(DAY,'2011-1-2','2015-2-2')--日相差(算上中间所有日)
4、计算恋爱的天数
declare @startday varchar(50) --声明变量时需要添加数据类型,变量名前加@
set @startday = '2008-8-8' --设置变量的值
--getdate是获取当前系统时间
select DATEDIFF(DAY,@startday,GETDATE()) as 恋爱天数
5、
--datepart 返回时间日期的某一个部分
--参数1是返回的哪一个部分
--参数2是以哪个日期作为被计算的日期
select DATEPART(YEAR,'2008-8-8')--返回年
select DATEPART(DY,'2008-8-8')--返回dayofyear 这一年的第几天
select DATEPART(QQ,'2008-8-8')--返回季度 共四个季度
--day month year 相当于上面的datepart
--返回天,月,年
select DAY('2008-8-8')
select year('2008-8-8')
select month('2008-8-8')
6、
--isdate 判断时间日期格式是否是正确
--返回值为1表示正确
--返回值为0表示错误
select ISDATE('2012-2-29')
select ISDATE('2008-80-8')
--sysdatetime 系统精确时间
select SYSDATETIME()
SELECT GETDATE()-- 区别是精确与否
二、类型转换函数
--数据类型转换 cast convert
--cast 先写被转换的value + as + 被转换成的类型
select CAST(1.73 as int)
select CAST(1.73 as varchar(50))
select CAST(1.73333333 as decimal(18,2))
select cast(CAST('1.78' as decimal(18,2)) as int)
select CAST('1.78' as decimal(18,2))
--convert 参数1是需要转换成为的类型,参数2是需要被转换的value
select CONVERT(int , '87')
select CONVERT(decimal(18,2) , '87.8787')--在精确后面位数的时候会自动四舍五入
select CONVERT(varchar(50) , 342523.234)