整理了SQL Server中是實現日曆的幾個方法
-
create function fn_Calendar(@year int, @month int)
-
returns nvarchar(max)
-
as
-
begin
-
declare @result nvarchar(max), @Enter nvarchar(8)
-
select @Enter = char(13)+char(10), @result = \' Sun Mon The Wed Thu Fri Sta\' + @Enter --表頭
-
-
-
declare @start datetime, @end datetime
-
select @start = rtrim(@year)+\'-\'+rtrim(@month)+\'-1\', @end = dateadd(mm, 1, @start)
-
-
set @result = @result+replicate(\' \', (datepart(dw, @start)+@@datefirst+6)%7) --第一行前面的空格
-
-
while datediff(d, @start, @end)>0
-
begin
-
if (datepart(dw, @start)+@@datefirst)%7 = 1
-
select @result = @result+@Enter --是否換行
-
-
select @result = @result+right(\' \'+rtrim(day(@start)), 4), @start = dateadd(d, 1, @start)
-
end
-
return @result
-
end
-
go
-
-
set datefirst 3
-
print dbo.fn_Calendar(2007, 12)
-
select dbo.fn_Calendar(2007, 12)
-
set datefirst 7
-
-
drop function dbo.fn_Calendar
-
-
/*
-
Sun Mon The Wed Thu Fri Sta
-
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
-
-
------------------------------------------
-
Sun Mon The Wed Thu Fri Sta
-
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 row(s) affected)
- */
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
資料庫應該建立一個日曆表
CREATE TABLE Calendar(
date datetime NOT NULL PRIMARY KEY CLUSTERED,
weeknum int NOT NULL,
weekday int NOT NULL,
weekday_desc nchar(3) NOT NULL,
is_workday bit NOT NULL,
is_weekend bit NOT NULL
)
GO
WITH CTE1 AS(
SELECT
date = DATEADD(day,n,'19991231')
FROM Nums
WHERE n <= DATEDIFF(day,'19991231','20201231')),
CTE2 AS(
SELECT
date,
weeknum = DATEPART(week,date),
weekday = (DATEPART(weekday,date) + @@DATEFIRST - 1) % 7,
weekday_desc = DATENAME(weekday,date)
FROM CTE1)
--INSERT INTO Calendar
SELECT
date,
weeknum,
weekday,
weekday_desc,
is_workday = CASE WHEN weekday IN (0,6) THEN 0 ELSE 1 END,
is_weekend = CASE WHEN weekday IN (0,6) THEN 1 ELSE 0 END
FROM CTE2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22392018/viewspace-1068772/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用sql server直接建立日曆SQLServer
- Oracle SQL實現階乘的幾個方法OracleSQL
- SQL Server中刪除重複資料的幾個方法SQLServer
- java實現一個月的日曆列印Java
- 【SQL】日曆SQL
- 確定幾個SQL Server欄中的最大值SQLServer
- SQL Server資料庫日誌清除的兩個方法SQLServer資料庫
- java 實現根據年月得到這個月的日曆Java
- 用java實現日曆demo。Java
- 日曆形式實現解析薦
- 物件~時間篇_日曆的實現物件
- SQL查詢日曆SQL
- EXCEL資料上傳到SQL SERVER中的簡單實現方法ExcelSQLServer
- SQL Server中合併使用者日誌表的方法SQLServer
- 幾個實用SQL Server取儲存過程SQLServer儲存過程
- HttpServletRequest中的方法是哪個類實現的?HTTPServlet
- 如何在 web 端實現一個有日曆的報表Web
- 【SQL Server 優化效能的幾個方面】SQLServer優化
- SQL Server資料庫的簡單實現方法SQLServer資料庫
- 清除SQL Server日誌的方法介紹SQLServer
- Python中4種方法實現列印整個Pandas DataFramePython
- vue之實現日曆----顯示農曆,滾動日曆監聽年月改變Vue
- 微信小程式實現簽到的日曆微信小程式
- PHP實現的簡單日曆程式碼PHP
- Oracle用SQL列印日曆OracleSQL
- sql語句建立日曆SQL
- SQL Server 收縮事務日誌的方法SQLServer
- 刪除SQL Server日誌的具體方法SQLServer
- SQL Server事務日誌的處理方法SQLServer
- SQL SERVER日誌清除的兩種方法(轉)SQLServer
- 原生JavaScript實現造日曆輪子JavaScript
- 使用RecycleView實現無限滾動的日曆View
- SQL Server實現Standby --日誌傳送(Log Shipping)SQLServer
- SQL Server 2005中修改 Server Collation的方法SQLServer
- 如何在SQL Server中實現 Limit m,n 的功能SQLServerMIT
- 在SQL SERVER中實現事務的部分回滾SQLServer
- sql server 計算兩個時間 相差的 幾天幾時幾分幾秒SQLServer
- 自定義view之實現日曆介面(一)View