加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver日期函数

发布时间:2020-12-12 13:35:19 所属栏目:MsSql教程 来源:网络整理
导读:SQLServer时间日期函数详解,SQLServer,时间日期, 1.????? 当前系统日期、时间 ??????? select getdate() 2. dateadd????? 在向指定日期加上一段时间的基础上,返回新的 datetime 值 ?????? 例如:向日期加上2天 ?????? select dateadd(day,2,'2004-10-15')??

SQLServer时间日期函数详解,SQLServer,时间日期,

1.????? 当前系统日期、时间

??????? select getdate()

2. dateadd????? 在向指定日期加上一段时间的基础上,返回新的 datetime 值

?????? 例如:向日期加上2天

?????? select dateadd(day,2,'2004-10-15')????? --返回:2004-10-17 00:00:00.000

3. datediff 返回跨两个指定日期的日期和时间边界数。

?????? select datediff(day,'2004-09-01','2004-09-18')?????? --返回:17

4. datepart 返回代表指定日期的指定日期部分的整数。

????? SELECT DATEPART(month,'2004-10-15')????? --返回 10

5. datename 返回代表指定日期的指定日期部分的字符串

?????? SELECT datename(weekday,'2004-10-15')????? --返回:星期五

6. day(),month(),year() --可以与datepart对照一下

select 当前日期=convert(varchar(10),getdate(),120)

,当前时间=convert(varchar(8),114)

select datename(dw,'2004-10-15')

select 本年第多少周=datename(week,sans-serif; font-size:14px; line-height:22.399999618530273px"> ?????????,今天是周几=datename(weekday,sans-serif; font-size:14px; line-height:22.399999618530273px"> 函数 参数/功能

GetDate( )?? 返回系统目前的日期与时间

DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值

date2-date1

DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期

DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值

DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

参数 interval的设定值如下:

值 缩 写(Sql Server) (Access 和 ASP) 说明

Year Yy yyyy 年 1753 ~ 9999

Quarter Qq q??? 季 1 ~ 4

Month Mm m??? 月1 ~ 12

Day of year Dy y?? 一年的日数,一年中的第几日 1-366

Day Dd d??? 日,1-31

Weekday Dw w 一周的日数,一周中的第几日 1-7

Week Wk ww?? 周,一年中的第几周 0 ~ 51

Hour Hh h??? 时0 ~ 23

Minute Mi n?? 分钟0 ~ 59

Second Ss s 秒 0 ~ 59

Millisecond Ms - 毫秒 0 ~ 999

access 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于

Access和asp中,这些函数的用法也类似

举例:

1.GetDate() 用于sql server :select GetDate()

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒

DateDiff('d','2005-7-25 22:56:32')返回值为 5 天

3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)

DatePart('d','2005-7-25 22:56:32')返回值为 25即25号

DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天

DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

具体的语法:

日期函数用来操作DATETIME 和SMALLDATETIME 类型的数据,执行算术运算。与其它函数一样,可以在

Select 语句的Select 和Where 子句以及表达式中使用日期函数。其使用方法如下:

日期函数参数,其中参数个数应不同的函数而不同。

·DAY()

DAY() 函数语法如下:

DAY (<date_expression>)

DAY() 函数返回date_expression 中的日期值。

·MONTH()

MONTH() 函数语法如下:

MONTH (<date_expression>)

MONTH() 函数返回date_expression 中的月份值。

与DAY() 函数不同的是,MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其

是1900 年1 月。

·YEAR()

YEAR() 函数语法如下:

YEAR (<date_expression>)

YEAR() 函数返回date_expression 中的年份值。

提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范

围,否则会出现错误。

·DATEADD()

DATEADD() 函数语法如下:

DATEADD (<datepart>, <number>, <date>)

DATEADD() 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart

” 在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、星期等。

其取值如表4-9 所示:

·DATEDIFF()

DATEDIFF() 函数语法如下:

DATEDIFF() (<datepart>, <date1>, <date2>)

DATEDIFF() 函数返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其

结果值是一个带有正负号的整数值。针对不同的datepart, DATEDIFF()函数所允许的最大差距值不

一样,如:datepart 为second 时,DATEDIFF() 函数所允许的最大差距值为68: 年datepart 为

millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。

·DATENAME()

DATENAME() 函数语法如下:

DATENAME (<datepart>, <date)>

DATENAME() 函数以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

·DATEPART()

DATEPART() 函数语法如下:

DATEPART (<datepart>, <date>)

DATEPART() 函数以整数值的形式返回日期的指定部分。此部分由datepart 来指定。

DATEPART (dd, date) 等同于DAY (date)

DATEPART (mm, date) 等同于MONTH (date)

DATEPART (yy, date) 等同于YEAR (date)

·GETDATE()

GETDATE() 函数语法如下:

GETDATE()

GETDATE() 函数以DATETIME 的缺省格式返回系统当前的日期和时间,它常作为其它函数或命令的参

数使用。

在开发数据库应用中,经常会遇到处理时间的问题,如查询指定时间的记录等。下面就这些常见的问题

,结合自己的一些经验,和大家探讨一下这类问题。

  首先介绍一下,SQL Server里处理时间的几个主要函数的用法:

getdate()函数:取得系统当前的日期和时间。返回值为datetime类型的。

用法:getdate()

例子:

select getdate() as dte,dateadd(day,-1,getdate()) as nowdat

输出结果:

dte nowdat

1999-11-21 19:13:10.083 1999-11-20 19:13:10.083

(1 row(s) affected)

datepart()函数:以整数的形式返回时间的指定部分。

用法:datepart(datepart,date)

参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute。

date是所指定的时间。

SELECT DATEPART(month,GETDATE()) AS 'Month Number'

Month Number

11

dateadd()函数:通过给指定的时间的指定部分加上一个整数值以返回一个新时间值。

用法:dateadd(datepart,sans-serif; font-size:14px; line-height:22.399999618530273px"> 参数说明:datepart(同上)

date(同上)

number要增加的值,整型,可正可负,正值返回date之后的时间值,负值返回date

之前的时间值

select getdate() as today

select dateadd(day,getdate())

输出:

today

1999-11-21 19:42:41.410

yesterday

1999-11-20 19:42:41.410

tomorrow

1999-11-22 19:42:41.410

datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。如1991-6-12和1991-6-21

之间以天

来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月

用法:datediff(darepart,date2)

参数说明:datepart(同上)

date1、date2(同上date)

select datediff(month,'1991-6-12','1992-6-21') as a


sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16),时间一,20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10),23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果: Select CONVERT(varchar(100),GETDATE(),0): 05 16 2006 10:57AM Select CONVERT(varchar(100),1): 05/16/06 Select CONVERT(varchar(100),2): 06.05.16 Select CONVERT(varchar(100),3): 16/05/06 Select CONVERT(varchar(100),4): 16.05.06 Select CONVERT(varchar(100),5): 16-05-06 Select CONVERT(varchar(100),6): 16 05 06 Select CONVERT(varchar(100),7): 05 16,06 Select CONVERT(varchar(100),8): 10:57:46 Select CONVERT(varchar(100),9): 05 16 2006 10:57:46:827AM Select CONVERT(varchar(100),10): 05-16-06 Select CONVERT(varchar(100),11): 06/05/16 Select CONVERT(varchar(100),12): 060516 Select CONVERT(varchar(100),13): 16 05 2006 10:57:46:937 Select CONVERT(varchar(100),14): 10:57:46:967 Select CONVERT(varchar(100),20): 2006-05-16 10:57:47 Select CONVERT(varchar(100),21): 2006-05-16 10:57:47.157 Select CONVERT(varchar(100),22): 05/16/06 10:57:47 AM Select CONVERT(varchar(100),23): 2006-05-16 Select CONVERT(varchar(100),24): 10:57:47 Select CONVERT(varchar(100),25): 2006-05-16 10:57:47.250 Select CONVERT(varchar(100),100): 05 16 2006 10:57AM Select CONVERT(varchar(100),101): 05/16/2006 Select CONVERT(varchar(100),102): 2006.05.16 Select CONVERT(varchar(100),103): 16/05/2006 Select CONVERT(varchar(100),104): 16.05.2006 Select CONVERT(varchar(100),105): 16-05-2006 Select CONVERT(varchar(100),106): 16 05 2006 Select CONVERT(varchar(100),107): 05 16,2006 Select CONVERT(varchar(100),108): 10:57:49 Select CONVERT(varchar(100),109): 05 16 2006 10:57:49:437AM Select CONVERT(varchar(100),110): 05-16-2006 Select CONVERT(varchar(100),111): 2006/05/16 Select CONVERT(varchar(100),112): 20060516 Select CONVERT(varchar(100),113): 16 05 2006 10:57:49:513 Select CONVERT(varchar(100),114): 10:57:49:547 Select CONVERT(varchar(100),120): 2006-05-16 10:57:49 Select CONVERT(varchar(100),121): 2006-05-16 10:57:49.700 Select CONVERT(varchar(100),126): 2006-05-16T10:57:49.827 Select CONVERT(varchar(100),130): 18 ???? ?????? 1427 10:57:49:907AM Select CONVERT(varchar(100),131): 18/04/1427 10:57:49:920AM 说明: 使用 CONVERT: CONVERT ( data_type [ ( length ) ],expression [,style ] ) 参数 expression 是任何有效的 Microsoft? SQL Server? 表达式。。? data_type 目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。 length nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。? style 日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。 SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。 在表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。 不带世纪数位 (yy) 带世纪数位 (yyyy)? 标准? 输入/输出**? - 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-dd Thh:mm:ss.mmm(不含空格)? - 130* Hijri**** dd mon yyyy hh:mi:ss:mmmAM? - 131* Hijri**** dd/mm/yy hh:mi:ss:mmmAM? * 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。 ** 当转换为 datetime时输入;当转换为字符数据时输出。 *** 专门用于 XML。对于从 datetime或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。 ****Hijri 是具有几种变化形式的日历系统,Microsoft? SQL Server? 2000 使用其中的科威特算法。 重要 默认情况下,SQL Server 根据截止年份 2049 解释两位数字的年份。即,两位数字的年份 49 被解释为 2049,而两位数字的年份 50 被解释为 1950。许多客户端应用程序(例如那些基于 OLE 自动化对象的客户端应用程序)都使用 2030 作为截止年份。SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改 SQL Server 所使用的截止年份并对日期进行一致性处理。然而最安全的办法是指定四位数字年份。 当从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。当从 datetime 或 smalldatetime 值进行转换时,可以通过使用适当的 char 或 varchar 数据类型长度来截断不需要的日期部分。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读