用法:

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