sqlserver日期和时间函数

时间:2022-07-11 12:06:42 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
SQL Server 日期和时间函数



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

(1)DATENAME ( datepart ,date )

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

SELECT DateName(day,Getdate()) –返回8 (2)DATEPART ( datepart , date )

返回表示指定日期的指定日期部分的整数。 SELECT DATEPART(year,Getdate()) –返回2006 (3)DATEADD (datepart , number, date )

返回给指定日期加上一个时间间隔后的新datetime 值。 SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期

(4)DATEDIFF ( datepart , startdate , enddate ) 返回跨两个指定日期的日期边界数和时间边界数。 SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --1

(5)DAY ( date )

返回一个整数,表示指定日期的天datepart 部分。 SELECT day(GetDate()) –返回8


(6)GETDATE()

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

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

返回表示指定日期的“月”部分的整数。 SELECT MONTH(GETDATE()) --返回11 (8)YEAR ( date )

返回表示指定日期的“年”部分的整数。 SELECT YEAR(GETDATE()) --返回2006

2、取特定日期

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

SELECT DateName(weekday,Getdate()) --Wednesday (2)计算哪一天是本周的星期一 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) (3)当前季度的第一天


SELECT DATEADD(quarter,

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

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

SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0))) —返回28 (5)一个季度多少天

declare @m tinyint,@time smalldatetime 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 select

@time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'

select datediff(day,@time,dateadd(mm,3,@time)) —返回92

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


SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返2006-11-08 3其它

(1)--下面的示例将日期指定为数字。数据库引擎将0 解释为1900 1 1 日。

SELECT MONTH(0), DAY(0), YEAR(0) –返回1 1 1900

--下面两句是等效的

SELECT DATENAME(WEEKDAY,0)

SELECT DATENAME(WEEKDAY,'1900-01-01')

(2)SET DATEFIRST { number | @number_var } 将一周的第一天设置为从1 7 的一个数字。 SET DATEFIRST 1 --表示一周的第一天是“星期一" SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday

SELECT DATEPART(weekday,GETDATE()) --返回3 --查看当前设置情况 select @@DATEFIRST

(3)SET DATEFORMAT { format | @format_var }

设置用于输入datetime smalldatetime 数据的日期部分


(月//年)的顺序。

...有效参数包括mdydmyymdydmmyd 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(4)日期部分的列表日期部分

缩写 year

yy, yyyyquarter

qq, qmonth

mm, mdayofyear dy, yday

dd, dweek

wk, wwweekday


dwhour

hhminute

mi, nsecond

ss, smillisecond ms


本文来源:https://www.wddqw.com/doc/8e1609aa01d276a20029bd64783e0912a2167c01.html