--取得某天的所在周的周一的函數 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 語句:
SELECTDATEPART(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 |