一、计算一年中的第几天DATENAME(dp,d)
DATENAME(dp,d)函数根据dp指定返回日期中相应部分的值,dp可以取值为:quarter,dayofyear,day,week,weekday,hour,minute,second等,返回的值是字符型。
首先呢,SQL Server自带的有一个函数datename(dayofyear,'2021-06-14')可以计算出一年中的第几天。

以此类推,你是不是想到一年中的第几周应该用weekofyear.But 没有这个。

所以,要计算一年中的第几周还需要花点心思了,那问题来了?一周中的哪一天作为第一天呢?
二、计算一年中的第几周
默认都是周天作为一周的第一天。但是第一天是可以设置的
set datefirst 5 -- 设置周五为第一天
select datepart(wk,'2021-06-14')


三、DATEPART(dp,d)函数
用法:
DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。返回的类型为整型。若要返回字符型可以用DATENAME()函数,可用于时间日期之间的拼接,用法和DATEPART()类似。
语法:DATEPART(datepart,date/string)
| 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类型,我们需要将其转换为string(varchar)类型。
declare @shijian decimal(8)
set @shijian = 20190718
SELECT GETDATE() AS 当前时间_date
,DATEPART(YEAR,GETDATE()) AS 当前年份_date
,DATEPART(yy,GETDATE()) AS 当前年份简写_date
,DATEPART(yy,'2019-07-18 14:17:25.793') AS 当前年份简写_string
,DATEPART(YYYY, CAST(CONVERT(varchar(8), @shijian) as DATE) ) as 当前年份简写_decimal

【题】获取HS_ESA41M00表KEEP_OF_DATE字段下所有年份的1.1号到1.15号,4.1号到4.15号,7.1号到7.15号,10.1号到10.15号数据 参考 https://www.cnblogs.com/EaTerLeader/p/11207137.html
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

本文介绍了如何使用SQL Server中的DATENAME和DATEPART函数计算一年中的第几天,特别关注了不同周数的定义和设置,并提供了获取HS_ESA41M00表特定日期数据的示例。通过实例演示了如何筛选1月、4月、7月和10月的1日至15日数据。
5305

被折叠的 条评论
为什么被折叠?



