日子和岁月函数,SQL中常用日期函数

--1 GETDATE() 返回当前系统日期
SELECT GETDATE()

1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')

  

一、SQLServer时间日期函数详解

星彩彩票app下载 1

(1)DATENAME ( datepart ,date )

 日期函数基数表达式的日期和时间或者是从时间间隔中返回值。

1.  当前系统日期、时间

 

   返回表示指定日期的指定日期部分的字符串。Datepart详见下面的列表.

  GETDATE(),返回当前系统的日期和时间。例:

        select getdate()

--2 DATEADD(日期部分,常数,日期) 返回将日期的指定日期部分加常数后的结果返回

SELECT DateName(day,Getdate()) –返回8

  SELECT GETDATE();  结果为:2010-05-18 15:53:08.920

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

日期部分可以是:

(2)DATEPART ( datepart , date )

 

       例如:向日期加上2天

星彩彩票app下载 2

    返回表示指定日期的指定日期部分的整数。

  DATEPART(item,date),返回日期指定的item(year,month,day,,weekday,hour,minute,secound等),也可以通过对应的简写(year:y),返回结果为整数。例:

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

 

SELECT DATEPART(year,Getdate()) –返回2006

SELECT DATEPART(YEAR,'2010-05-18'); 结果为:2010

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

--常数为正
SELECT DATEADD(YY,1,GETDATE())

(3)DATEADD (datepart , number, date )

SELECT DATEPART(MONTH,'2010-05-18'); 结果为:5

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

--等同于
SELECT DATEADD(YEAR,1,GETDATE())

    返回给指定日期加上一个时间间隔后的新datetime 值。

SELECT DATEPART(DAY,'2010-05-18');  结果为:18

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

星彩彩票app下载 3

SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期

SELECT DATEPART WEEKDAY,'2010-05-18');结果为:3(周二)

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

 

(4)DATEDIFF ( datepart , startdate , enddate )

SELECT DATEPART(HOUR,'2010-05-18 15:59:30'); 结果为:15

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

--常数为负数
SELECT DATEADD(YY,-2,GETDATE())

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

SELECT DATEPART(MINUTE,'2010-05-18 15:59:30'); 结果为:59

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

星彩彩票app下载 4

SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1

SELECT DATEPART(SECOND,'2010-05-18 15:59:30'); 结果为:30

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

星彩彩票app下载, 

(5)DAY ( date )

 

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

--常数为小数(直接舍去小数部分)
SELECT DATEADD(YY,2.4,GETDATE())
SELECT DATEADD(YY,2.5,GETDATE())
SELECT DATEADD(YY,2.6,GETDATE())

返回一个整数,表示指定日期的天datepart 部分。

DATENAME(item,date),返回日期的指定的item,date为一个字符串。例:

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

星彩彩票app下载 5

SELECT day(GetDate()) –返回8

SELECT DATENAME(WEEKDAY,'2010-05-18');  结果为:星期二

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

 

(6)GETDATE()

 

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

--3 DATEDIFF( 日期部分,日期1,日期2) 返回两个日期之间的差值,日期部分(日期1-日期2)
--日期1>日期2
SELECT DATEDIFF(YY,'2008/1/1',GETDATE())

以datetime 值的SQL Server 2005 标准内部格式返回当前系统日期和时间。

DATEDIFF(item,date1,date2),计算两个日期部分date1和date2之间的区别,返回的结果为item表示单元的整数值。例:

select 本年第多少周=datename(week,'2004-10-15')

星彩彩票app下载 6

SELECT GetDate()   --返回2006-11-08 13:37:56.233

SELECT DATEDIFF(year,'2000-1-1','2010-05-18'); 结果为10

          ,今天是周几=datename(weekday,'2004-10-15')

 

(7)MONTH ( date )

SELECT DATEDIFF(year,'2010-05-18','2000-1-1'); 结果为-10

二、函数 参数/功能

--日期1<日期2
SELECT DATEDIFF(YY,GETDATE(),'2008/1/1')

返回表示指定日期的“月”部分的整数。

SELECT DATEDIFF(MONTH,'2010-01-01','2010-05-18'); 结果为4

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

 星彩彩票app下载 7

SELECT MONTH(GETDATE()) --返回11

SELECT DATEDIFF(DAY,'2010-05-01','2010-05-18'); 结果为17

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

 

(8)YEAR ( date )

 

date2-date1

--4 DATENAME() 返回指定日期的日期部分的字符串(返回字符串)
SELECT DATENAME(YY,GETDATE())

返回表示指定日期的“年”部分的整数。

DATEADD(i,n,d),将i值单元里的数字n增加到指定日期d。结果为datetime类型。例:

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

星彩彩票app下载 8

SELECT YEAR(GETDATE()) --返回2006

SELECT DATEADD(DAY,7,'2010-05-18'); 结果为:2010-05-25 00:00:00.000

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

 

2、取特定日期

SELECT DATEADD(YEAR,-5,'2010-05-18'); 结果为:2005-05-18 00:00:00.000

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

--' '是连接符号
SELECT DATENAME(YY,GETDATE()) DATENAME(QQ,GETDATE()) --QQ 是QUATRER代表季度

(1)获得当前日期是星期几

三、参数 interval的设定值如下:

星彩彩票app下载 9

SELECT DateName(weekday,Getdate()) --Wednesday

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

 

(2)计算哪一天是本周的星期一

Year Yy yyyy 年 1753 ~ 9999

--5 DATEPART() 返回指定日期的日期部分的整数(返回整数)
SELECT DATEPART(YY,GETDATE())

SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01')  --返回2006-11-06 00:00:00.000

SELECT DATEADD(week, DATEDIFF(week,0,getdate()),0)     

Quarter Qq q    季 1 ~ 4

星彩彩票app下载 10

(3)当前季度的第一天

Month Mm m    月1 ~ 12

 

SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000

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

--' '是加符号
SELECT DATEPART(YY,GETDATE()) DATEPART(QQ,GETDATE())

(4)如何取得某个月的天数

Day Dd d    日,1-31

星彩彩票app下载 11

SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03') 1,0)))  —返回28

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

 

(5)一个季度多少天

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

--6 DAY() 返回指定日期的日部分的整数
SELECT DAY(GETDATE())

declare @m tinyint,@time smalldatetime

Hour Hh h    时0 ~ 23

星彩彩票app下载 12

select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
                       when @m between 4 and 6 then 4
                       when @m between 7  and 9 then 7
                       else 10 end

Minute Mi n   分钟0 ~ 59

 

select @time=datename(year,getdate()) '-' convert(varchar(10),@m) '-01'
select datediff(day,@time,dateadd(mm,3,@time)) —返回92

Second Ss s 秒 0 ~ 59

--7 MONTH() 返回指定日期的月部分的整数
SELECT MONTH(GETDATE())

(6)获得年月日(yyyy-MM-dd)

Millisecond Ms - 毫秒 0 ~ 999

星彩彩票app下载 13

SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返回2006-11-08

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

 

3、其它

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

--8 YEAR() 返回指定日期的年部分的整数
SELECT YEAR (GETDATE())

(1)--下面的示例将日期指定为数字。数据库引擎将0 解释为1900 年1 月1 日。
SELECT MONTH(0), DAY(0), YEAR(0) –返回1    1   1900

举例:

星彩彩票app下载 14

--下面两句是等效的
SELECT DATENAME(WEEKDAY,0)
SELECT DATENAME(WEEKDAY,'1900-01-01')

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

 

(2)SET DATEFIRST { number | @number_var }

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

将一周的第一天设置为从1 到7 的一个数字。

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

SET DATEFIRST 1 --表示一周的第一天是“星期一"
SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday
SELECT DATEPART(weekday,GETDATE()) --返回3
--查看当前设置情况
select @@DATEFIRST

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

(3)SET DATEFORMAT { format | @format_var }

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

设置用于输入datetime 或smalldatetime 数据的日期部分(月/日/年)的顺序。
...有效参数包括mdy、dmy、ymd、ydm、myd 和dym。
...该设置仅用在将字符串转换为日期值时的解释中。它不影响日期值的显示。
...SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
...SET DATEFORMAT 将覆盖SET LANGUAGE 的隐式日期格式设置。
下面是例子:
-- Set date format to year, day, month.
SET DATEFORMAT ydm;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/31/12';
SELECT @datevar AS DateVar;
GO
-- Set date format to year, month, day.
SET DATEFORMAT ymd;
GO
DECLARE @datevar DATETIME;
SET @datevar = '1998/12/31';
SELECT @datevar AS DateVar;
GO

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

(4)日期部分的列表

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

日期部分

缩写

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

具体的语法:

 

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

数据类型

范围

精确度

datetime

1753 年 1 月 1 日到 9999 年 12 月 31 日

3.33 毫秒

smalldatetime

1900 年 1 月 1 日到 2079 年 6 月 6 日

1 分钟

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 的缺省格式返回系统当前的日期和时间,它常作为其它函数或命令的参

数使用。

 

实例:

1.获取两个日期间的平均值

select DATEADD(DD,datediff(DAY,'2001-08-12','2011-06-25')/2,'2001-08-12')

结果:2006-07-19 00:00:00.000

 

原文地址:

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:日子和岁月函数,SQL中常用日期函数

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。