SQL Server 日期和时间函数.docx
《SQL Server 日期和时间函数.docx》由会员分享,可在线阅读,更多相关《SQL Server 日期和时间函数.docx(6页珍藏版)》请在冰豆网上搜索。
![SQL Server 日期和时间函数.docx](https://file1.bdocx.com/fileroot1/2023-1/4/4d0229b9-caaf-4a9d-85dc-f58ed9eaa58f/4d0229b9-caaf-4a9d-85dc-f58ed9eaa58f1.gif)
SQLServer日期和时间函数
1、常用日期方法(下面的GetDate()='2006-11-0813:
37:
56.233')
(1)DATENAME(datepart,date)
返回表示指定日期的指定日期部分的字符串。
Datepart详见下面的列表.
SELECTDateName(day,Getdate())–返回8
(2)DATEPART(datepart,date)
返回表示指定日期的指定日期部分的整数。
SELECTDATEPART(year,Getdate())–返回2006
(3)DATEADD(datepart,number,date)
返回给指定日期加上一个时间间隔后的新datetime值。
SELECTDATEADD(week,1,GetDate())--当前日期加一周后的日期
(4)DATEDIFF(datepart,startdate,enddate)
返回跨两个指定日期的日期边界数和时间边界数。
SELECTDATEDIFF(month,'2006-10-11','2006-11-01')--返回1
(5)DAY(date)
返回一个整数,表示指定日期的天datepart部分。
SELECTday(GetDate())–返回8
(6)GETDATE()
以datetime值的SQLServer2005标准内部格式返回当前系统日期和时间。
SELECTGetDate() --返回2006-11-0813:
37:
56.233
(7)MONTH(date)
返回表示指定日期的“月”部分的整数。
SELECTMONTH(GETDATE())--返回11
(8)YEAR(date)
返回表示指定日期的“年”部分的整数。
SELECTYEAR(GETDATE())--返回2006
2、取特定日期
(1)获得当前日期是星期几
SELECTDateName(weekday,Getdate())--Wednesday
(2)计算哪一天是本周的星期一
SELECTDATEADD(week,DATEDIFF(week,'1900-01-01',getdate()),'1900-01-01') --返回2006-11-0600:
00:
00.000
或
SELECTDATEADD(week,DATEDIFF(week,0,getdate()),0)
(3)当前季度的第一天
SELECTDATEADD(quarter,DATEDIFF(quarter,0,getdate()),0)—返回2006-10-0100:
00:
00.000
(4)如何取得某个月的天数
SELECTDay(dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,'2006-02-03')+1,0))) —返回28
(5)一个季度多少天
declare@mtinyint,@timesmalldatetime
select@m=month(getdate())
select@m=casewhen@mbetween1and3then1
when@mbetween4and6then4
when@mbetween7 and9then7
else10end
select@time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
selectdatediff(day,@time,dateadd(mm,3,@time))—返回92
(6)获得年月日(yyyy-MM-dd)
SELECTCONVERT(VARCHAR(10),GETDATE(),120)–返回2006-11-08
3、其它
(1)--下面的示例将日期指定为数字。
数据库引擎将0解释为1900年1月1日。
SELECTMONTH(0),DAY(0),YEAR(0)–返回1 1 1900
--下面两句是等效的
SELECTDATENAME(WEEKDAY,0)
SELECTDATENAME(WEEKDAY,'1900-01-01')
(2)SETDATEFIRST{number|@number_var}
将一周的第一天设置为从1到7的一个数字。
SETDATEFIRST1--表示一周的第一天是“星期一"
SELECTDATENAME(WEEKDAY,GETDATE())--Wednesday
SELECTDATEPART(weekday,GETDATE())--返回3
--查看当前设置情况
select@@DATEFIRST
(3)SETDATEFORMAT{format|@format_var}
设置用于输入datetime或smalldatetime数据的日期部分(月/日/年)的顺序。
...有效参数包括mdy、dmy、ymd、ydm、myd和dym。
...该设置仅用在将字符串转换为日期值时的解释中。
它不影响日期值的显示。
...SETDATEFORMAT的设置是在执行或运行时设置,而不是在分析时设置。
...SETDATEFORMAT将覆盖SETLANGUAGE的隐式日期格式设置。
下面是例子:
--Setdateformattoyear,day,month.
SETDATEFORMATydm;
GO
DECLARE@datevarDATETIME;
SET@datevar='1998/31/12';
SELECT@datevarASDateVar;
GO
--Setdateformattoyear,month,day.
SETDATEFORMATymd;
GO
DECLARE@datevarDATETIME;
SET@datevar='1998/12/31';
SELECT@datevarASDateVar;
GO
返回表示指定日期的指定日期部分的字符串
DateName(datepart,date)其中datepart可以是year,month,weekday
SELECTDATENAME(year,getdate())AS'YearName'--------返回:
2013
SELECTDATENAME(month,getdate())AS'MonthName' --------返回:
05
SELECTDATENAME(weekday,getdate())AS'WeekdayName'------返回:
星期三
3.DATEADD(datepart,number,date),向指定日期加上一段时间,返回新的datetime值。
selectDateAdd(MM,2,'2008-8-8')--------------返回:
2008-10-0800:
00:
00.000
selectDateAdd(dd,2,'2008-8-8')--------------返回:
2008-08-1000:
00:
00.000
selectdateadd(hh,-1,getdate())--------------返回:
2012-07-0215:
26:
25.240,返回前一个小时的时间
4.DATEDIFF(date-part,date-expression-1,date-expression-2) 返回两个日期之间的时间间隔
此函数计算两个指定日期之间的差值,结果为日期部分中等于(date2-date1)的有符号的整数值
SELECTdatediff(hour,'4:
00AM','5:
50AM')---------------------------返回:
1
SELECTdatediff(month,'1987/05/02','1995/11/15')------------------返回:
102
SELECTdatediff(day,'00:
00','23:
59')------------------------------返回:
0
SELECTdatediff(day, '1999/07/1900:
00', '1999/07/2323:
59')------返回:
4
SELECTdatediff(month,'1999/07/19','1999/07/23')------------------返回:
0
SELECTdatediff(month,'1999/07/19','1999/08/23')------------------返回:
1
date-part 参数可以是下列的值:
datepart
缩写
年
yy,yyyy
季度
qq,q
月
mm,m
年中的日
dy,y
日
dd,d
周
wk,ww
星期
dw,w
小时
hh
分钟
mi,n
秒
ss,s
毫秒
ms
微妙
mcs
纳秒
ns
例如查询当天更新的数据
select*fromNewswheredatediff(dd,add_time,getdate())=0
5 DATEPART(datepart,date)返回代表指定日期的指定日期部分的整数。
--今天是2009-2-24星期二
SELECTDATEPART(year,getdate())as'Year' --------返回:
2009
SELECTDATEPART(month,getdate())as'Month' ---------返回:
2
SELECTDATEPART(weekday,getdate())as'Weekday'---------返回:
3,如:
Sunday=1、Saturday=7
SELECTDAY(getdate()) -----------------------返回:
24
备注:
DAY、MONTH、和YEAR函数分别是DATEPART(dd,date)、DATEPART(mm,date)、和DATEPART(yy,date)的同义词。
datapart日期部分
日期部分
缩写
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