用法:

DATEPART() 函數用于返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。返回的類型為整型若要返回字符型可以用DATENAME()函數,可用于時間日期之間的拼接,用法和DATEPART()類似

語法:

DATEPART(datepart,date/string)

date/string是日期與時間的數據類型,datepart是你要提取的那部分數據,返回的類型為整型如:DATEPART(year,'2019-07-18 11:44:57.330')或者DATEPART(yyyy,'2019-07-18 11:44:57.330')

結果為:2019

其他可用的參數如下:

datepart

縮寫形式

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
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww

 

 

 

 

 

 

 

 

 

 

 

 


 

如果不是date或者字符串類型,我們需要將其轉化為string(varchar)類型,如:

1 declare @shijian decimal(8)
2     set @shijian = 20190718
3 
4 SELECT GETDATE() AS 當前時間_date 
5     ,DATEPART(YEAR,GETDATE()) AS 當前年份_date
6     ,DATEPART(yy,GETDATE()) AS 當前年份簡寫_date
7     ,DATEPART(yy,'2019-07-18 14:17:25.793') AS 當前年份簡寫_string
8     ,DATEPART(YYYY, CAST(CONVERT(varchar(8), @shijian) as DATE) )  as 當前年份簡寫_decimal

以上所有SQL執行結果為

 


 

【題】獲取HS_ESA41M00表KEEP_OF_DATE字段下所有年份的1.1號到1.15號,4.1號到4.15號,7.1號到7.15號,10.1號到10.15號數據

select * from HS_ESA41M00 where DATEPART(MONTH, KEEP_OF_DATE) in(01,04,07,10) and DATEPART(DAY, KEEP_OF_DATE) between 01 and 15