sql中计算某天是全年的第几周及取得某天的所在周的周一的日期的函数

复制代码
--取得某天的所在周的周一的函数
CREATE FUNCTION getMondayBtDate(@date datetime)
RETURNS date
AS
begin
    DECLARE @week INT,@cnt INT
    select @week = DATEPART(dw,@date)
    SET @cnt = 2 - @week
    IF(@week = 1)
    BEGIN
        SET @cnt = -6
    END
    RETURN DATEADD(DAY, @cnt, @date)
end


--获取某天是当前年份中的第几周,以周一为一周的开始
CREATE FUNCTION getWeekNoBtDate(@date datetime)
RETURNS date
AS
begin
    DECLARE @dtMonday DATETIME,@cnt INT;
    select @dtMonday = dbo.getMondayBtDate(@date)
    SELECT @cnt = DATEPART(dy,@dtMonday)
    RETURN CAST(year(@dtMonday) AS NVARCHAR) + CASE WHEN (@cnt+6)/7 < 10 THEN '0'+CAST((@cnt+6)/7 AS nvarchar) ELSE CAST((@cnt+6)/7 AS NVARCHAR) END
end
复制代码

 

SQL Server DATEPART() 函数

定义和用法

DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

实例

假设我们有下面这个 "Orders" 表:

OrderIdProductNameOrderDate
1 'Computer' 2008-12-29 16:25:46.635

我们使用如下 SELECT 语句:

DATEPART(yyyy,OrderDate)
DATEPART(mm,OrderDate)
DATEPART(dd,OrderDate)

结果:

OrderYearOrderMonthOrderDay
2008 12 29

posted on   itjeff  阅读(7542)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示