SQL SERVER时间函数

本篇文章仍是学习《程序员的SQL金典》内容的记录,这次将讲解的是SQL SERVER的时间函数。程序员

本文只讲SQL SERVER支持的时间函数(其它数据库这里就不罗列了,想看更多的能够关注《程序员的SQL金典》)。数据库

对于时间来说,我想基础的东西你们仍是须要懂的,好比说,对于时间来讲,有分:函数

(1)日期:表示“年-月-日”信息的数据类型,其精度精确到“日”,其中包含了年、月、日三个信息,好比“2008-08-08”。而无时间点的概念。在数据库中,通常用Date来表示日期类型。学习

(2)时间:表示“小时:分:秒” 信息的数据类型,其精度精确到“秒”,其中包含了小时、分、秒三个信息,好比“19:00:00”。而无日期的概念。在数据库中,通常用Time来表示时间类型。spa

(3)日期时间:表示“年-月-日 小时:分:秒” 信息的数据类型,其精度精确到“秒”,其中包含了年、月、日、小时、分、秒六个信息,好比“2008-08-08 08:00:00”。既包含了日期,也包含了时间点。在数据库中,通常用DateTime来表示日期时间类型。code

(4)时间戳:表示比日期时间精度更高精度的时间类型。好比咱们想区分表中两条记录插入表中的前后顺序,因为数据库操做速度很是快,若是用DateTime 类型记录输入插入时间的话,若两条记录插入的时间间隔很是短的话是没法区分它们的,这时就可使用时间戳类型。数据库中,通常用TimeStamp来表示时间戳类型。blog

不一样的数据库系统对日期、时间、日期时间与时间戳等数据类型的支持差别性很是大,有的数据类型在有的数据库系统中不被支持,而有的数据类型在不一样的数据库系统中表示精度和其类型名称所暗示的精度不一样,好比Oracle 中的Date 类型中包含时间信息。数据库中的日期时间函数对这些类型的支持差异是很是小的,所以在通常状况下咱们将这些类型统一称为“日期时间类型”。three

 

GETDATE()函数

 

获取得当前日期时间,返回的信息是包括了日期、时间(精确到秒之后部分)的时间戳信息。get

SELECT GETDATE() as 当前日期时间

MSSQL Server 没有专门提供取得当前日期、取得当前时间的函数。可是经过间接的方式也能够获取到。主要是使用到Convert()函数。table

获取当前日期的方式:

SELECT CONVERT(VARCHAR(50) ,GETDATE( ), 101) as 当前日期

获取当前日期的方式:

SELECT CONVERT(VARCHAR(50) ,GETDATE(), 108) as 当前时间

 

DATEADD (datepart , number, date )函数

 

用于进行日期时间的加法运算,其中datepart参数是表示日期部分的参数(好比是以日期仍是以月份相加等),number参数是具体的加数,正数表明向将来日期方向加,负数表明向过去日期方向减,date参数为待计算的日期时间类型数据。

SELECT DATEADD(MONTH, 1, GETDATE())
SELECT FBirthDay, DATEADD (YEAR ,3,FBirthDay) as threeyrs,
DATEADD(QUARTER ,20,FBirthDay) as ttqutrs,
DATEADD(MONTH ,68,FBirthDay) as sxtmonths,
DATEADD(WEEK, -1000,FBirthDay) as thweeik
FROM T_Person

datepart参数能够取的单位类型以下:

单位 别名 说明
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 毫秒

 

 

 

 

 

 

 

 

 

 

DATEDIFF ( datepart , startdate , enddate )函数

 

用于计算两个日期时间之间的差额。其中datepart参数表示日期部分的参数(好比只比较年仍是只比较月等),startdate参数为起始日期时间类型数据;enddate参数为结束日期时间类型数据。

SELECT DATEDIFF(DAY, '2013/12/17 21:00:00', '2013/12/19 10:00:00')
SELECT FRegDay,FBirthDay,DATEDIFF(WEEK, FBirthDay, FRegDay) FROM T_Person

datepart参数能够取的单位类型以下:

单位 别名 说明
year yy, yyyy
quarter qq, q 季度
month mm, m
dayofyear  dy, y 工做日
day dd, d 天数
week wk, ww
Hour hh 小时
minute mi, n 分钟
second ss, s
millisecond ms 毫秒

 

 

 

 

 

 

 

 

 

DATENAME(datepart,date)函数

 

用来获取一个日期的特定部分,比方只获取年份或者是只获取月份等。其中datepart参数是表示要返回的日期部分的参数(即若是是Year的话,则返回的是具体的年份),date参数为待计算日期。

SELECT FBirthDay,DATENAME(Weekday,FBirthDay),
FRegDay,DATENAME(DW, FRegDay)
FROM T_Person

datepart参数能够取的单位类型以下:

单位 别名 说明
Year yy、yyyy 年份
Quarter qq, q 季度
Month mm, m 月份
Dayofyear dy, y 每一年的某一日
Day dd, d 日期
Week wk, ww 星期
Weekday dw 工做日
Hour hh 小时
Minute  mi, n  分钟
Second  ss, s  秒
Millisecond  ms  毫秒

 

 

 

 

 

 

 

 

 

 

DATEPART (datepart,date)函数

 

MSSQL SERVER提供另外一个函数也一样能够实现获取日期时间特定部分。其中datepart参数是表示要返回的日期部分的参数(即若是是Year的话,则返回的是具体的年),date参数为待计算日期。 

SELECT FBirthDay, DATEPART(Dayofyear,FBirthDay),
FRegDay, DATEPART(Year, FRegDay)
FROM T_Person

datepart参数能够取的单位类型以下:

单位 别名 说明
Year yy、yyyy 年份
Quarter qq, q 季度
Month mm, m 月份
Dayofyear dy, y 每一年的某一日
Day dd, d 日期
Week wk, ww 星期
Weekday dw 工做日
Hour hh 小时
Minute  mi, n  分钟
Second  ss, s  秒
Millisecond  ms  毫秒

 

 

 

 

 

 

 

 

 

注:DATEPART()函数的返回值是数字,而DATENAME()函数则会将尽量以名称的方式作为返回值。

相关文章
相关标签/搜索