日度归档:2017年7月12日

mssql 系统函数 数学函数

mssql 数学函数,是将一些数学中常用的计算函数放入sql中,方便我们在sql中进行数值的数学计算。

常见的MSSQL数学函数有以下几种:

函数名 功能
Abs 返回参数的绝对值
Acos 反余弦值
Asin 反正弦值
Atan 正切值
Atn2 反正切值
Ceiling 向前进一取整
Cos 余弦值
Cot 正弦值/余弦值
Degrees 将弧度转换为角度
Exp 返回e的x次方
Floor 舍一取整
Log 返回自然对数(以e为底的对数)
Log10 返回以十为底的对数
Pi 返回圆周率
Power 返回参数1的参数2次方
Radians 将角度转换为弧度
Rand 返回随机数
Round 带精确为的四舍五入
Sign 三角函数
Sin 求正弦值
Sqrt 返回参数的平方根
Square 求平方值
Tan 反正切值


 
/*常用数学函数举例*/
/*1 Abs*/
select ABS(-90),ABS(1.76),ABS(-1.98)
/*2 向前进一取整 ceiling*/
 select ceiling(-90.0),ceiling(1.76),ceiling(-1.98)
/*3 向后舍一取整 floor*/
 select floor(-90),floor(1.76),floor(-1.98)
 /*4 求平方函数 square*/
  select square(-9),square(3),square(-1.1)
  /*5 求一个数的多少次方 Power*/
  select Power(5,2)
  /*6 产生0~1的随机数 rand*/
  select RAND(1.43),RAND(1.98),RAND(-2.1),RAND(-2.6),rand()
  /*7 指定位数 四舍五入方法 round*/
  select round(1.43,3),round(1.98,1),round(-2.1,2),round(-2.6,0)
  

MSSQL “日期和时间”函数用法及功能简介


1 Current_Timestamp/GetDate()

功能:返回当前时间精确到毫秒,以上两各函数具有相同的功能

参数:


返回值:
返回一个dateTime类型


举例说明:

  select Current_timestamp
  select getdate()



2 Dateadd

功能:给日期指定部分添加相应的值形成新的日期

参数:
日期部分
日期部分增量(integer)
源日期

返回值:
datetime类型(通过增量计算得到的值)


举例说明:


 /*2.1 给定一个日期 2017-7-12  增加一周  以下是三种写法*/
select DATEADD(week,1,'2017-7-12'),DATEADD(wk,1,'2017-7-12'),DATEADD(ww,1,'2017-7-12')
/*2.2 给定一个日期2017-7-12 增加一天*/
select DATEADD(day,1,'2017-7-12'),DATEADD(d,1,'2017-7-12'),DATEADD(dd,1,'2017-7-12')
/*2.3 给定一个日期2017-7-12 减少一天*/
select DATEADD(day,-1,'2017-7-12'),DATEADD(d,-1,'2017-7-12'),DATEADD(dd,-1,'2017-7-12')



3 Datediff

功能:返回给定两个时间差

参数:
日期部分
开始时间
结束时间

返回值:
int型,将时间差相减转换为日期部分中的类型


举例说明:


  /*3.1 返回两个日期之间的天数 */
select DATEDIFF(day,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(d,'2017-7-10 10:00:00','2017-7-11 19:00:00'),
DATEDIFF(dd,'2017-7-10 10:00:00','2017-7-11 19:00:00') 

/*3.2 返回两个日期之间的小时 */
select DATEDIFF(hour,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(hh,'2017-7-10 10:00:00','2017-7-11 19:00:00') 

/*3.3 返回两个日期之间的分数 */
select DATEDIFF(minute,'2017-7-10 10:00:00','2017-7-11 19:00:00'),DATEDIFF(mi,'2017-7-10 10:00:00','2017-7-11 19:00:00'),
DATEDIFF(n,'2017-7-10 10:00:00','2017-7-11 19:00:00')



4 Datename /Datepart

功能: 以上两个函数拥有相同的用法,都是返回指定日期部分的数据,例 返回日期中的年份 毫秒数

参数:
日期部分
日期

返回值:
integer类型


举例说明:


  /*4 Datename用法 */
/*返回当前日期的年 月 日  毫秒  周 一年中的多少天*/
declare @d datetime
 set @d ='2017-7-12 18:09:32:897'
 
 select DATENAME(YEAR,@d) as [年份],DATENAME(MONTH,@d) as [月份],DATENAME(DAY,@d) as [天],
 DATENAME(ms,@d) as [毫秒], DATENAME(wk,@d) as [周], DATENAME(y,@d) as [一年中的第多少天]

   select datepart(YEAR,@d) as [年份],datepart(MONTH,@d) as [月份],datepart(DAY,@d) as [天],
 datepart(ms,@d) as [毫秒], datepart(wk,@d) as [周], datepart(y,@d) as [一年中的第多少天]




5 Day

功能: 返回一个日期数据的day部分

参数:
日期

返回值:
integer类型


举例说明:


  /*5 Day用法 返回一个日期类型中的day部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select DAY(@d)
 



6 getutcdate()

功能: 返回一个全球UTC标准时间
此时间比北京时间慢8个小时


参数:
日期

返回值:
integer类型


举例说明:


  /*6 getutcdate*/
  select GETDATE(),getutcdate()



7 isDate

功能: 验证当前字符串是否可以转换为一个日期类型

参数:
字符串 varchar

返回值:
integer类型
0代表验证失败
1代表验证成功


举例说明:


  select ISDATE('244'),ISDATE('2017-1-'),ISDATE('2017-1-1'),ISDATE('2017-1-2 14:89:5'),ISDATE('2017-7-12 13:9:4:567')



8 Month

功能:返回一个日期数据的month(月份)部分

参数:
日期

返回值:
integer类型


举例说明:


   /*8 Month用法 返回一个日期类型中的月份部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select Month(@d)



9 Sysdatetime()

功能:返回出更高精度的时间(比毫微秒精度还高)

参数:


返回值:
datetime


举例说明:


    select SYSDATETIME(),datepart(mcs,GETDATE()),datepart(mcs,SYSDATETIME()),datepart(NS,SYSDATETIME())



10 SYSDATETIMEOFFSET()

功能:返回出更高精度的时间(比毫微秒精度还高) 并加入当前时间比UTC时间的偏移值

参数:


返回值:
datetime +偏移值 (datetimeoffset)


举例说明:


   select SYSDATETIMEOFFSET(),SYSDATETIME()



11 SYSUTCDATETIME()

功能:返回出更高精度的世界时间(比毫微秒精度还高)

参数:


返回值:
datetime


举例说明:


    select SYSUTCDATETIME(),datepart(mcs,GETUTCDATE()),datepart(mcs,SYSUTCDATETIME()),datepart(NS,SYSUTCDATETIME())



12 switchoffset()

功能:对datetimeoffset包含时区的数据类型,进行时区加减计算

参数:
datetimeoffset

返回值:
datetimeoffset


举例说明:


 /*12.1 定义一个包含时区的值进行计算*/
   declare @t datetimeoffset 
   set @t= '2017-07-12 10:56:53.3771263 +08:00' ---加八个时区
   select SWITCHOFFSET(@t,420)   --加7个市区 7*60 =420    



13 todatetimeoffset()

功能:将datetime和时区一起转换为”datetimeoffset”类型

参数:
datetime
时区

返回值:
datetimeoffset


举例说明:


 /*12.1 定义一个包含时区的值进行计算*/
   declare @t datetime 
   set @t= '2017-07-12 10:56:53'  
   select todatetimeoffset(@t,420)   --加7个市区 7*60 =420    



14 year

功能:返回一个日期数据的year(年)部分

参数:
日期

返回值:
integer类型


举例说明:


   /*14 year用法 返回一个日期类型中的年份部分*/
declare @d datetime
 set @d ='2017-7-1 18:09:32:897'
 select Year(@d)


相关阅读:
mssql 日期关键字叫法分类–日期部分

mssql 日期关键字叫法分类–日期部分

下文主要介绍 mssql中每个日期部分在系统中的叫法

日期部分

可用表达式

中文名
year

yy, yyyy

quarter

qq, q

季度
month

mm, m

dayofyear

dy, y

年中的第几天
day

dd, d

week

wk, ww

weekday

dw, w

工作日
hour

hh

小时
minute

mi, n

second

ss, s

millisecond

ms

毫秒
microsecond

mcs

毫微秒
nanosecond

ns

纳秒

mssql日期各部分叫法