【997755.com澳门葡京】server中的日期函数,日期处理datetime和date之间的并行转换

DATEADD   在向钦点日期加上一段时间的功底上,重临新的 datetime 值。

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   DATEFIRAV4ST  
作的改换。任何一年的   ①   月   一   日定义了   week  
日期部分的始发数字,例如:DATEPART(wk,   ‘Jan   壹,   xxxx’)   =  
壹,此处   xxxx   代表任一年。  
   
  weekday   (dw)   日期部分重回对应于星期中的某天的数,例如:Sunday   =
  1、Saturday   =   7。weekday   日期部分发生的数取决于   SET  
DATEFIQX56ST   设定的值,此命令设定星期中的第三天。  
   
  date  
【997755.com澳门葡京】server中的日期函数,日期处理datetime和date之间的并行转换。   
  是回到   datetime   或   smalldatetime  
值或日期格式字符串的表明式。对   17伍三   年   壹   月   一  
日之后的日子用datetime   数据类型。更早的日期存款和储蓄为字符数据。当输入  
datetime   值时,始终将其放入引号中。因为   smalldatetime  
只精确到分钟,所以当用   smalldatetime   值时,秒和皮秒总是   0。  
   
 
要是只钦点年份的末梢两位数字,则小于或等于”两位数年份停止期”配置选项的值的尾声两位数字的数字所在世纪与结束年所在百余年同样。大于该选项的值的末了两位数字的数字所在百多年为告竣年所在百多年的前三个世纪。例如,假若  two   digit   year   cutoff   为   204玖   (暗许),则   4玖   被解释为
  204玖,2050   被演讲为   194九。为幸免模糊,请使用三位数的年份。  
   
 
有关时间值钦命的越多音信,请参见时间格式。有关日期钦点的越多音信,请参见
  datetime   和   smalldatetime。    
   
  再次来到类型  
  int  
   
  注释  
  DAY、MONTH、和   YEA福特Explorer   函数分别是   DATEPART(dd,  
date)、DATEPART(mm,   date)、和   DATEPART(yy,   date)   的同义词。  
   
  示例  
  GETDATE  
函数重回当明日子;可是,相比时并不总是须求完整的日期信息(日常只是对日期的一片段开始展览比较)。此示例显示  GETDATE   及   DATEPART   的输出。   
    

语法           DATEADD ( datepart , number, date )

语法           DATEADD ( datepart , number, date )

日子是数额处理中通常采纳到的信息之一。生日、数据处理时间、布置的预计达成时间,按年、季、月的总结,这一个都属于日期处理的范围。由于日期中蕴藏了年、季、月、日等众多音信,分化的国家对日期格式、日期文字描述及星期有不相同的显著,因而产生了日期处理的扑朔迷离。本章首要钻探在SQL Server数据库中对日期的种种处理格局。

997755.com澳门葡京 1  SELECT   GETDATE()   AS   ‘Current   Date’   
997755.com澳门葡京 2  GO   

参数           

参数           

日期类型概述

SQL Server中的日期类型包涵datetime和smalldatetime,仅能处理能够识别为1753年~999九年间的日子的值,没有单身的日期型或时间型。

    
  上面是结果集:   
    

(一) datepart:是明显应向日期的哪壹部分回到新值的参数。

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

1.datetime

datetime类型处理从17伍三年7月2日~9999年五月7日的日期和时间数额,精确度为百分之三秒。即:对于0.000~0.001、0.00玖的日子值,调节为0.000;对于0.00二~0.00四的日期值,调节为0.003;对于0.00五~0.008的日子值,调节为0.00柒。

譬如说,上边包车型地铁代码在输入时,其时间精确度为百分之1秒,但经数据库保存后再显示出来,其结果就早已做了拍卖。

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

 

/*–结果

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的积存长度为捌字节,日期和时间各用4个字节存款和储蓄,第伍个四字节储存自一玖零伍年七月二十二十五日事先或之后的天数(以1九零2年11月四日为分界点,在一玖零五年3月二10一日以前的日期的流年小于0,在一玖零伍年7月二十三日从此的日子的小运大于0)。此外3个四字节储存以深夜(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

997755.com澳门葡京 3  Current   Date                                   
997755.com澳门葡京 4  —————————     
997755.com澳门葡京 5  Feb   18   1998   11:46PM                     
997755.com澳门葡京 6    
997755.com澳门葡京 7  SELECT   DATEPART(month,   GETDATE())   AS   ‘Month   Number’   
997755.com澳门葡京 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

下表列出了 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类型处理从一九零3年3月21三日~207九年一月陆 日的日期和时间数额,精确到分钟。2九.998秒或更低的smalldatetime值向下舍入为最周围的分钟,2玖.99玖秒或更加高的smalldatetime值向上舍入为最相仿的分钟。

smalldatetime的存款和储蓄长度为四字节,第多个贰字节囤积自1九零1年四月二十一日过后的小运。别的3个二字节储存深夜(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   月   2九   日。   
    

(贰)number:是用来充实 datepart
的值。假若钦命八个不是整数的值,则将舍弃此值的小数部分。

(二)number:是用来扩充 datepart
的值。要是钦命多个不是整数的值,则将抛弃此值的小数部分。

日子处理函数

日子由年、月、日、时等三个部分构成,它的拍卖相对复杂,因而,SQL Server提供了多量的日子处理函数,用以达成各类日期数据的拍卖。通晓好那一个函数,对产生数据库的种种日期处理格外供给,本节将介绍多少个常用的日期处理函数。期增减函数能够对日期内定部分的值进行增减,并回随处理后的日期值,SQL Server提供的日子增减函数为DATEADD。

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

里面囊括以下参数。

¡ 
datepart:是规定应向日期的哪1部分回到新值的参数。表二-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的值。正数表示扩展,负数表示减少,借使钦赐的是非整数值,则忽略此值的小数部分,不做4舍五入处理。例如,DATEADD(Day,壹.7,date),表示date增添1天。

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

要是date是smalldatetime,则赶回smalldatetime,不然重临datetime。date为smalldatetime,Datepart为Second(ss,s)或Millisecond(ms)时,再次来到值将依据日期增减的结果调整到分钟;date为datetime,Datepart为Millisecond(ms)时,重临值将依照日期增减的结果调控为百分之三秒。调整规则能够参照二.一节的有关认证。

date允许直接与number进行增减计算,即对于DATEADD(Day,number,date),等同于date+number。

997755.com澳门葡京 9  SELECT   DATEPART(month,   GETDATE())   
997755.com澳门葡京 10  GO   

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

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

 日期音信获得函数

日期音讯获得函数用于获取日期钦点部分的连带新闻,常用的日期消息得到函数如表2-贰所示。

                                     
常用的日子消息得到函数

功 能 说 明

语   

参数及再次来到值数据类型说明

归来代表钦命日期的内定日期部分的字符串

DATENAME(datepart,date)

datepart是钦点应重临的日子部分的参数,其定义如表二-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时,重回百份之三秒

997755.com澳门葡京, 

DATEPART(Week,date)再次来到的星期总结方式,是比照礼拜五为七日的首后天,那点与华夏人的日子处理习惯分歧,在运用时要留意那或多或少。DATENAME函数重回内定日期的钦定日期部分的字符串,其回来的现实性字符串值,与SET DATEFIEvoqueST及SET DATELANGUAGE选项的装置有关。使用DATEPART(Weekday,date)时,其重临的值与SET DATEFI路虎极光ST选项的安装有关,具体的将要二.三节中验证。

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

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

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

  日期差值总计函数

日期差值总计函数用于计算四个给定日期内定部分的疆界数,SQL Server提供的日子差值总计函数为DATEDIFF。

DATEDIFF的切切实实语法如下:

DATEDIFF ( datepart , startdate , enddate )

中间包涵以下参数。

¡ 
datepart:规定了应在日期的哪1部分计量差额,其定义如表贰-一所示。

¡ 
startdate:规定了总计的起来日期。

¡ 
enddate:规定了计算的平息日期。

回到类型:integer

算算的开头日期和结束日期,能够是日期或日期格式的字符串。总结的方式是从enddate减去startdate。固然startdate比enddate晚,重回负值。当结果超过整数值范围,DATEDIFF就发出错误。对于飞秒,最大数是二四天20钟头三十一分钟贰三.6四7秒。对于秒,最大数是6捌年。

测算跨分钟、秒和微秒这几个边界的艺术,使得DATEDIFF给出的结果在全部数据类型中是壹律的。结果是带正负号的整数值,其约等于跨第二个和第一个日中间的datepart边界数。例如,在200伍年二月四日和2007年一月十一日里边的月度数是1。

997755.com澳门葡京 11  SELECT   DATEPART(m,   0),   DATEPART(d,   0),   DATEPART(yy,   0)   

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

    有关钦定日期的越来越多新闻,请参见 datetime 和 smalldatetime。

 其余日期处理有关函数

其余常用的日子处理相关函数包蕴以下多少个。

  上边是结果集:  
   
  —–   ——   ——  
  1           1             1900  

若果你只钦命年份的末梢两位数字,则小于或等于”两位数年份停止期”配置选项的值的结尾两位数字的数字所在世纪与甘休年所在百余年同样。大于该选项的值的最后两位数字的数字所在世纪为竣事年所在百多年的前多个世纪。例如,借使two digit year cutoff 为 2049(默许),则 49 被解释为 204玖,2050
被解释为 一九四8。为防止模糊,请使用几人数的年份。

若果您只内定年份的结尾两位数字,则小于或等于”两位数年份甘休期”配置选项的值的尾声两位数字的数字所在百多年与甘休年所在世纪同样。大于该选项的值的终极两位数字的数字所在百余年为终结年所在世纪的前2个世纪。例如,即使two digit year cutoff 为 204玖(暗中同意),则 4玖 被演说为 204九,2050
被解说为 一九四八。为防止模糊,请使用多少人数的年份。

1.GETDATE

GETDATE遵照datetime值重临当前系统日期和岁月。

GETDATE的语法如下:

GETDATE()

回到类型:datetime

归来类型
返回 datetime,但如果 date 参数是 smalldatetime,返回 smalldatetime。

回来类型
返回 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-四所示。

表2-四                                     
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的运用 ==*/

–一. Style=十一时,表示日期字符串为:mm/dd/yyyy格式

SELECT CONVERT(datetime,’11/1/2003′,101)

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

–二. Style=拾壹时,表示日期字符串为: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=10一时,表示将日期转换为:mm/dd/yyyy 格式

SELECT CONVERT(varchar,@dt,101)

–结果:01/11/2003

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

SELECT CONVERT(varchar,@dt,103)

–结果:11/01/2003

 

/*== 那是许六人日常犯的谬误,对非日期型转变使用日期的style样式
==*/

SELECT CONVERT(varchar,’2003-1-11′,101)

–结果:2003-1-11

诸如:在同一天的根基上足够一天的时日。

比如:在同1天的底子上增添1天的年华。

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

查询前段时代若为20一7年七月,则上面包车型客车言辞查询出为0,即为本月。

查询前段时期若为20一7年八月,则上边包车型大巴话语查询出为0,即为前一个月。

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

询问当天,若当天是二零一七年八月三日,则再次回到0,即为当天。

询问当天,若当天是20一7年三月十一日,则再次来到0,即为当天。

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

 

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website