SQL Server 日期和時間函式

2021-06-14 16:06:20 字數 3543 閱讀 9042

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

將一周的第一天設定為從1 到7 的乙個數字。

set datefirst 1 --表示一周的第一天是「星期一"

select datename(weekday,getdate()) --wednesday

select datepart(weekday,getdate()) --返回3

--檢視當前設定情況

select @@datefirst

(3)set dateformat

設定用於輸入datetime 或smalldatetime 資料的日期部分(月/日/年)的順序。

...有效引數包括mdy、dmy、ymd、ydm、myd 和dym。

...該設定僅用在將字串轉換為日期值時的解釋中。它不影響日期值的顯示。

...set dateformat 的設定是在執行或執行時設定,而不是在分析時設定。

...set dateformat 將覆蓋set language 的隱式日期格式設定。

下面是例子:

-- set date format to year, day, month.

set dateformat ydm;

godeclare @datevar datetime;

set @datevar = '1998/31/12';

select @datevar as datevar;

go-- set date format to year, month, day.

set dateformat ymd;

godeclare @datevar datetime;

set @datevar = '1998/12/31';

select @datevar as datevar;

go(4)日期部分的列表

日期部分

縮寫 year

yy, yyyy

quarter

qq, q

month

mm, m

dayofyear

dy, y

daydd, d

week

wk, ww

weekday

dwhour

hhminute

mi, n

second

ss, s

millisecond

ms資料型別

範圍 精確度

datetime

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

3.33 毫秒

smalldatetime

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

1 分鐘

SQL Server時間日期的資料型別和函式

資料型別 格式time hh mm ss nnnnnnn date yyyy mm dd smalldatetime yyyy mm dd hh mm ss datetime yyyy mm dd hh mm ss nnn getdate 獲取當前系統日期和時間 在指定日期的基礎上加上一段時間,返回...

mysql時間日期 MySql 時間和日期函式

下面是mysql各種內建時間函式 1.curdate current date 用於獲取當前的日期。2.curtime current time 用於獲取現在的時鐘時間。3.now current timestamp localtime sysdate 四類函式可以獲取當前的日期和時鐘時間 4.da...

Sql Server函式全解 四 日期和時間函式

日期和時間函式主要用來處理日期和時間值,本篇主要介紹各種日期和時間函式的功能和用法,一般的日期函式除了使用date型別的引數外,也可以使用datetime型別的引數,但會忽略這些值的時間部分。相同的,以time型別值為引數的函式,可以接受datetime型別的引數,但會忽略日期部分。getdate ...