确定性标量函数,用于获取日期的一年中的一周

Posted

技术标签:

【中文标题】确定性标量函数,用于获取日期的一年中的一周【英文标题】:Deterministic scalar function to get week of year for a date 【发布时间】:2012-07-11 12:31:13 【问题描述】:

这是获取星期几日期的好方法,Deterministic scalar function to get day of week for a date。

现在,谁能帮我创建一个确定性的标量函数来获取一年中的一周作为日期吗?谢谢。

【问题讨论】:

这个网站上有很多很多关于在 SQL 中提取特定日期属性的问题,最简单的解决方案通常是创建一个calendar table。 感谢@Pondlife,您的链接启发了我。我将在此基础上回答我自己的问题。 Getting week number off a date in MS SQL Server 2005?的可能重复 【参考方案1】:

这是确定性的,我可以将其用作计算列。

datediff(week, dateadd(year, datediff(year, 0, @DateValue), 0), @DateValue) + 1 

测试代码:

;
with 
Dates(DateValue) as 
(
    select cast('2000-01-01' as date)
    union all 
    select dateadd(day, 1, DateValue) from Dates where DateValue < '2050-01-01'
)
select 
    year(DateValue) * 10000 + month(DateValue) * 100 + day(DateValue) as DateKey, DateValue,        
    datediff(day, dateadd(week, datediff(week, 0, DateValue), 0), DateValue) + 2 as DayOfWeek,
    datediff(week, dateadd(month, datediff(month, 0, DateValue), 0), DateValue) + 1 as WeekOfMonth,
    datediff(week, dateadd(year, datediff(year, 0, DateValue), 0), DateValue) + 1 as WeekOfYear
    from Dates option (maxrecursion 0)

【讨论】:

以上是关于确定性标量函数,用于获取日期的一年中的一周的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER查询时间是一年中第几周的函数

如何在mysql中获取日期的一周的第一天?

“一年中的一周”算法需要改进

pyspark - 无法从日期列中获取一年中的季度和一周

c++:从 yyyyMMdd 获取周数

sql获取两个日期之间的每周开始日期