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" 表:

OrderId ProductName OrderDate
1 'Computer' 2008-12-29 16:25:46.635

我們使用如下 SELECT 語句:

SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1

結果:

OrderYear OrderMonth OrderDay
2008 12 29


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM