sqlserver 日期函式

2021-08-29 19:58:22 字數 4175 閱讀 7139

一直都在用oracle,對sqlserver中的一些函式很不熟悉,在工作用偶爾會用到,貼在這裡,便於以後查詢

取出資料庫欄位中datetime列的日期部分:

(1)select datename(year,getdate())+'-'+datename(month,getdate())+'-'+datename(day,getdate())

(2)select convert(varchar(10),getdate(),120)

(3)select * from mydsk_提醒 where year(預約時間) = '2008' and month(預約時間)='8' and day(預約時間)='29' and 提醒人id ='50271'

(4)select * from mydsk_提醒 where convert(varchar(10),預約時間,120)='2008-08-29' and 提醒人id ='50271'

取出資料庫欄位中datetime列的時間部分:

cast(datepart(hh,預約時間)as varchar) --小時

cast(datepart(mi,預約時間)as varchar)--分鐘

cast(datepart(ss,預約時間)as varchar)--秒

***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

將一周的第一天設定為從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

day

dd, d

week

wk, ww

weekday

dwhour

hhminute

mi, n

second

ss, s

millisecond

ms資料型別

範圍datetime

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

smalldatetime

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

SQL Server 日期函式

獲取當前系統日期時間。取決於 1 精度要求 2 utc時間還是系統時間 3 要不要帶時區 與 getdate 和 getutcdate 比較而言,sysdatetime 和 sysutcdatetime 的秒的小數部分精度更高。sysdatetimeoffset 包含系統時區偏移量。sysdatet...

sql server日期時間函式

2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 00 00.000 3.datediff 返回跨兩個指定日期的日期和時間邊界數。select ...

sql server日期時間函式

sql server日期時間函式 sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 ...