澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:server中的日期函数,日期

2019-10-21 作者:数据库网络   |   浏览(151)

DATEADD   在向钦命日期加上意气风发段时间的根底上,返回新的 datetime 值。

日期管理datetime和date之间的竞相转变

DATEPART  
  再次回到代表钦赐日期的指定日期部分的整数。  
   
  语法  
  DATEPART   (   datepart   ,   date   )    
   
  参数  
  datepart  
   
  是钦赐应重返的日子部分的参数。下表列出了   Microsoft®   SQL   Server™   识别的日期部分和缩写。  
   
  日期部分   缩写    
  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    
   
   
  week   (wk,   ww)   日期部分显示对   SET   DATEFI牧马人ST   作的改换。任何一年的   1   月   1   日定义了   week   日期部分的始发数字,比方:DATEPART(wk,   'Jan   1,   xxxx')   =   1,此处   xxxx   代表任一年。  
   
  weekday   (dw)   日期部分再次来到对应于星期中的某天的数,比如:Sunday   =   1、Saturday   =   7。weekday   日期部分产生的数决定于   SET   DATEFIHighlanderST   设定的值,此命令设定星期中的第一天。  
   
  date  
   
  是回到   datetime   或   smalldatetime   值或日期格式字符串的表达式。对   1753   年   1   月   1   日过后的日期用datetime   数据类型。更早的日期存款和储蓄为字符数据。当输入   datetime   值时,始终将其归入引号中。因为   smalldatetime   只正确到秒钟,所以当用   smalldatetime   值时,秒和阿秒总是   0。  
   
  如若只内定年份的末梢两位数字,则小于或等于"两位数年份截至期"配置选项的值的尾声两位数字的数字所在百多年与截止年所在世纪同样。大于该选项的值的最后两位数字的数字所在百多年为完工年所在世纪的前三个世纪。比如,假如  two   digit   year   cutoff   为   2049   (默许),则   49   被演说为   2049,2050   被解说为   一九五〇。为幸免模糊,请使用肆人数的年度。  
   
  有关时间值钦定的越来越多新闻,请参见时间格式。有关日期内定的越多音信,请参见   datetime   和   smalldatetime。    
   
  再次来到类型  
  int  
   
  注释  
  DAY、MONTH、和   YEAPRADO   函数分别是   DATEPART(dd,   date)、DATEPART(mm,   date)、和   DATEPART(yy,   date)   的同义词。  
   
  示例  
  GETDATE   函数再次来到当今天期;但是,比较时并不总是要求总体的日子音信(平常只是对日期的如火如荼部分进行比较)。此示例突显  GETDATE   及   DATEPART   的输出。        

语法           DATEADD ( datepart , number, date )

日子是数据管理中有的时候应用到的新闻之大器晚成。生日、数据处理时间、布置的展望实现时间,按年、季、月的总计,那个都属于日期管理的规模。由于日期中隐含了年、季、月、日等比较多信息,分歧的国家对日期格式、日期文字描述及星期有例外的分明,因而发生了日期管理的复杂。本章重要斟酌在SQL Server数据库中对日期的种种处理办法。

澳门新萄京官方网站 1  SELECT   GETDATE()   AS   'Current   Date'   
澳门新萄京官方网站 2  GO   

参数           

日子类型概述

澳门新萄京官方网站:server中的日期函数,日期处理datetime和date之间的相互转换。SQL Server中的日期类型蕴含datetime和smalldatetime,仅能处理能够分辨为1753年~9999年间的日期的值,未有独立的日期型或时间型。

    
  下边是结果集:        

(1) datepart:是规定应向日期的哪部分回去新值的参数。

1.datetime

datetime类型管理从1753年一月1日~9999年二月二10日的日子和岁月数额,正确度为百分之三秒。即:对于0.000~0.001、0.009的日子值,调节为0.000;对于0.002~0.004的日期值,调解为0.003;对于0.005~0.008的日子值,调度为0.007。

例如说,上边的代码在输入时,其时间准确度为百分之意气风发秒,但经数据库保存后再展现出来,其结果就曾经做了拍卖。

DECLARE @t TABLE(date char(21))

INSERT @t SELECT '1900-1-1 00:00:00.000'

...

INSERT @t SELECT '1900-1-1 00:00:00.009'

SELECT date,调换后的日子=CAST(date as datetime) FROM @t

 

澳门新萄京官方网站:server中的日期函数,日期处理datetime和date之间的相互转换。/*--结果

date                     转换后的日期



1900-1-1 00:00:00.000    1900-01-01 00:00:00.000
...
1900-1-1 00:00:00.000    1900-01-01 00:00:00.010

--*/

datetime的仓库储存长度为8字节,日期和时间各用4个字节存款和储蓄,第八个4字节囤积自一九零零年四月1日事先或之后的小运(以一九零二年七月1日为分界点,在一九〇三年四月1日此前的日子的气数小于0,在1904年八月1日从此的日子的运气大于0)。此外三个4字节积存以中午(00:00:00.000)后皮秒数所代表的每一天的时间。

比如,上边的代码演示了datetime变量中,仅包括单纯的日子和仅仅的年华时,日期存款和储蓄的十六进制存款和储蓄表示结果。

DECLARE @dt datetime

 

--单纯的日子

SET @dt='1900-1-2'

SELECT CAST(@dt as binary(8))

--结果: 0x0000000100000000

 

--单纯的时间

SET @dt='00:00:01'

SELECT CAST(@dt as binary(8))

--结果: 0x000000000000012C

澳门新萄京官方网站 3  Current   Date                                   
澳门新萄京官方网站 4  ---------------------------     
澳门新萄京官方网站 5  Feb   18   1998   11:46PM                     
澳门新萄京官方网站 6    
澳门新萄京官方网站 7  SELECT   DATEPART(month,   GETDATE())   AS   'Month   Number'   
澳门新萄京官方网站 8  GO   

下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 缩写
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

2.smalldatetime

smalldatetime类型管理从一九〇三年八月1日~2079年六月6 日的日子和岁月数额,准确到分钟。29.998秒或更低的smalldatetime值向下舍入为最周围的分钟,29.999秒或越来越高的smalldatetime值向上舍入为最相仿的分钟。

smalldatetime的仓库储存长度为4字节,第贰个2字节积攒自1900年四月1日从此的造化。另外叁个2字节储存下午(00:00:00.000)后的分钟数。

譬如,上面包车型客车代码演示了smalldatetime变量中,仅满含单纯的日子和单独的日午时,日期存款和储蓄的十六进制存款和储蓄表示结果。

DECLARE @dt smalldatetime

--单纯的日子

SET @dt='1900-1-2'

SELECT CAST(@dt as binary(4))

--结果: 0x00010000

--单纯的年月

SET @dt='00:10'

SELECT CAST(@dt as binary(4))
--结果: 0x0000000A

  上面是结果集:  
   
  Month   Number    
  ------------    
  2                          
   
  此示例若是日期是   5   月   29   日。        

(2)number:是用来充实 datepart 的值。借使钦点一个不是整数的值,则将甩掉此值的小数部分。

日子管理函数

日期由年、月、日、时等两个部分构成,它的拍卖相对复杂,因此,SQL Server提供了大量的日子管理函数,用以完结各样日期数据的拍卖。通晓好那一个函数,对成功数据库的各个日期处理非常须要,本节将介绍多少个常用的日期管理函数。期增减函数能够对日期钦赐部分的值举办增减,并回四管理后的日期值,SQL Server提供的日子增减函数为DATEADD。

DATEADD的现实语法如下:DATEADD ( datepart , number, date )

中间包涵以下参数。

¡  datepart:是规定应向日期的哪部分回到新值的参数。表2-1列出了SQL Server扶助的日子部分、缩写及意义。

                    DATEADD、DATEDIFF帮助的日子部分、缩写及意义

日 期 部 分

缩    写

含    义

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

毫秒

 

¡  number:是用来充实datepart的值。正数表示扩大,负数表示裁减,假如内定的长短整数值,则忽视此值的小数部分,不做四舍五入管理。比如,DATEADD(Day,1.7,date),表示date扩展1天。

¡  date:是回去datetime或smalldatetime值或日期格式字符串的表明式。

例如date是smalldatetime,则赶回smalldatetime,否则再次回到datetime。date为smalldatetime,Datepart为Second(ss,s)或米尔isecond(ms)时,再次回到值将依靠日期增减的结果调治到分钟;date为datetime,Datepart为Millisecond(ms)时,重临值将依据日期增减的结果调度为百分之三秒。调解准则能够参照2.1节的连带认证。

date允许直接与number举办增减总计,即对于DATEADD(Day,number,date),等同于date number。

澳门新萄京官方网站 9  SELECT   DATEPART(month,   GETDATE())   
澳门新萄京官方网站 10  GO   

    例如,如果为 datepart 指定 day,为 number 指定 1.75,则 date 将增加 1。

 日期新闻获得函数

日子音信获得函数用于获取日期钦命部分的相关新闻,常用的日子音讯拿到函数如表2-2所示。

                                      常用的日期新闻获得函数

功 能 说 明

语    法

参数及再次回到值数据类型表达

回到代表钦赐日期的钦点日期部分的字符串

DATENAME(datepart,date)

datepart是点名应再次来到的日子部分的参数,其定义如表2-3所示。date是重回datetime或smalldatetime值或日期格式字符串的表达式。DATENAME函数再次来到nvarchar,DATEPART函数重临int

回到代表内定日期的钦定日期部分的板寸

DATEPART(datepart,date)

回来表示钦赐日期中的年份的整数

YEAR(date)

返回int

再次来到表示钦命日期中的月份的整数

MONTH(date)

返回int

回来表示钦命日期中的天的板寸

DAY(date)

返回int

                  DATENAME、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

秒。date为smalldatetime时,始终再次来到0

Millisecond

Ms

皮秒。date为smalldatetime时,始终重回0,为datetime时,重返百份之三秒

 

DATEPART(Week,date)再次回到的礼拜计算形式,是比照周末为一周的首后天,那点与华夏人的日子管理习贯不一样,在运用时要在乎那点。DATENAME函数再次来到钦定日期的内定日期部分的字符串,其回来的求实字符串值,与SET DATEFIWranglerST及SET DATELANGUAGE选项的装置有关。使用DATEPART(Weekday,date)时,其再次回到的值与SET DATEFI路虎极光ST选项的安装有关,具体的就要2.3节中证实。

  上边是结果集:  
   
  -----------    
  5                        
   
  (1   row(s)   affected)  
   
  在这里示例中,以数字代表日期。注意:SQL   Server   将   0   解释为   01/01/一九〇二。        

(3)date:是回来 datetime 或 smalldatetime 值或日期格式字符串的表达式。

  日期差值计算函数

日期差值总括函数用于总结五个给定日期钦定部分的分界数,SQL Server提供的日期差值总括函数为DATEDIFF。

DATEDIFF的现实语法如下:

DATEDIFF ( datepart , startdate , enddate )

当中囊括以下参数。

¡  datepart:规定了应在日期的哪部分划算差额,其定义如表2-1所示。

¡  startdate:规定了总计的发端日期。

¡  enddate:规定了总结的停止日期。

归来类型:integer

计量的早先日期和终止日期,能够是日期或日期格式的字符串。总计的艺术是从enddate减去startdate。倘若startdate比enddate晚,重临负值。当结果大于整数值范围,DATEDIFF就时有发生错误。对于皮秒,最大数是24天20钟头31分钟23.647秒。对于秒,最大数是68年。

计算跨分钟、秒和微秒那些边界的章程,使得DATEDIFF给出的结果在全部数据类型中是同豆蔻年华的。结果是带正负号的整数值,其也正是跨第一个和第1个日之内的datepart边界数。举例,在二〇〇五年16月4日和二〇〇七年四月30日里边的月度数是1。

澳门新萄京官方网站 11  SELECT   DATEPART(m,   0),   DATEPART(d,   0),   DATEPART(yy,   0)   

    有关钦点日期的越多音信,请参见 datetime 和 smalldatetime。

 别的日期管理相关函数

此外常用的日期管理有关函数包含以下多少个。

  上面是结果集:  
   
  -----   ------   ------  
  1           1             1900  

假诺你只钦定年份的最终两位数字,则小于或等于"两位数年份甘休期"配置选项的值的终极两位数字的数字所在世纪与结束年所在世纪同样。大于该选项的值的末尾两位数字的数字所在世纪为了却年所在百余年的前二个世纪。举例,假诺two digit year cutoff 为 2049(暗许),则 49 被批注为 2049,2050 被解释为 一九四九。为制止模糊,请使用三个人数的年度。

1.GETDATE

GETDATE遵照datetime值再次来到当前系统日期和时间。

GETDATE的语法如下:

GETDATE()

回到类型:datetime

再次回到类型
返回 datetime,但如果 date 参数是 smalldatetime,返回 smalldatetime。

2.ISDATE

ISDATE显著输入的表明式是还是不是可行日期。

在输入日期表明式时,日期都以以日期格式的字符串提供的,由于分化的区域有两样的日期格式,所以并不可能担保输入的日子表明式能够被SQL Server识别,这种处境下,就要求用ISDATE来剖断日期表达式能无法准确地被SQL Server识别了。

ISDATE的语法如下:

ISDATE(expression)

回来类型:int

 

3.CONVERT

CONVERT将某种数据类型的表明式显式调换为另大器晚成种数据类型。

严谨来讲,CONVERT不属于日期管理函数,只是它被平日用来日期管理中,所以这里把它列入了别样日期管理函数,上面是CONVERT的用法描述(只着重表达在日期管理中的应用)。

CONVERT的活龙活现语法如下:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

内部包蕴以下参数。

¡  expression:是要退换数据类型的灵光SQL Server表明式。

¡  data_type:是expression转变后的数据类型,length是对于有精度定义必要的data_type的精度定义,对于从未精度定义须要的data_type,该参数能够轻便。

¡  style:定义数据类型转变时的格式,对于日期类型的转移,它的定义如表2-4所示。

表2-4                                      style在日期转变中的表达

不带世纪数位

带世纪数位

标    准

输入/输出

0或100

默认值

mon dd yyyy hh:miAM(或 PM)

1

101

美国

mm/dd/yyyy

2

102

ANSI

yy.mm.dd

3

103

英国/法国

dd/mm/yy

4

104

德国

dd.mm.yy

5

105

意大利

dd-mm-yy

6

106

dd mon yy

7

107

mon dd, yy

8

108

hh:mm:ss

9或109

默认值 毫秒

mon dd yyyy hh:mi:ss:mmmAM(或PM)

10

110

美国

mm-dd-yy

11

111

日本

yy/mm/dd

12

112

ISO

yymmdd

13或113

欧洲默认值 毫秒

dd mon yyyy hh:mm:ss:mmm(24h)

14

114

hh:mi:ss:mmm(24h)

20或120

ODBC规范

yyyy-mm-dd hh:mm:ss[.fff]

21或121

ODBC规范(带毫秒)

yyyy-mm-dd hh:mm:ss[.fff]

126

ISO8601

yyyy-mm-ddThh:mm:ss.mmm

130

Hijri

dd mon yyyy hh:mi:ss:mmmAM

131

Hijri

dd/mm/yy hh:mi:ss:mmmAM

 

 

说明:

①  输入/输出:“输入”表示从字符串转变为日期时字符串的日子格式,“输出”指从日期转变为字符串时的日期字符串格式。

②  Hijri:是装有两种改造格局的日历系统,SQL Server使用此中的科威特算法。

 

当从smalldatetime调换为字符数据时,由于smalldatetimer只保留到分钟的数量,因而,对于满含秒或微秒的体制,将在秒或纳秒的岗位上海展览中心示零。当从datetime或smalldatetime值实行调换时,能够因此使用方便的char或varchar数据类型长度来截断不必要的日子部分。

 

注意:

在SQL Server中,由于平昔提供的日子均是以日期格式的字符串提供,所以在使用CONVERT进行日期格式调换时,要先把日子格式的字符串转变为日期型,然后手艺选拔CONVERT实行日期格式转变,不然就改为字符串调换为字符串,此时的style选项是对事情没有什么益处的。

 

回去类型:由参数data_type确定。

下边是采用CONVERT进行日期调换的简要示例:

/*== 字符转换为日期时,Style的运用 ==*/

--1. Style=101时,表示日期字符串为:mm/dd/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',101)

--结果:2003-11-01 00:00:00.000

--2. Style=101时,表示日期字符串为:dd/mm/yyyy格式

SELECT CONVERT(datetime,'11/1/2003',103)

--结果:2003-01-11 00:00:00.000

 

/*== 日期调换为字符串 ==*/

DECLARE @dt datetime

SET @dt='2003-1-11'

--1. Style=101时,表示将日期转变为:mm/dd/yyyy 格式

SELECT CONVERT(varchar,@dt,101)

--结果:01/11/2003

--2. Style=103时,表示将日期转变为:dd/mm/yyyy 格式

SELECT CONVERT(varchar,@dt,103)

--结果:11/01/2003

 

/*== 那是不菲人经常犯的荒唐,对非日期型调换使用日期的style样式 ==*/

SELECT CONVERT(varchar,'2003-1-11',101)

--结果:2003-1-11

举例:在同一天的根底上助长一天的岁月。

SELECT DATEADD (day, 1,CONVERT(varchar(100), GETDATE(), 21) )  as time

查询前一个月若为二零一七年一月,则上面包车型客车口舌查询出为0,即为上个月。

select datediff(month,'2017-02-13 00:00:00.000',getdate()) 

查询当天,若当天是二〇一七年12月3日,则重回0,即为当天。

 select datediff(day,'2017-02-13',getdate()) 

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:server中的日期函数,日期

关键词: