整理了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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EXCEL資料上傳到SQL SERVER中的簡單實現方法ExcelSQLServer
- java 實現根據年月得到這個月的日曆Java
- HttpServletRequest中的方法是哪個類實現的?HTTPServlet
- 用java實現日曆demo。Java
- Python中4種方法實現列印整個Pandas DataFramePython
- 如何在 web 端實現一個有日曆的報表Web
- 如何在SQL Server中實現 Limit m,n 的功能SQLServerMIT
- sql server 計算兩個時間 相差的 幾天幾時幾分幾秒SQLServer
- vue之實現日曆----顯示農曆,滾動日曆監聽年月改變Vue
- SQL Server 通過REVERSE實現C#中lastIndexOf的效果SQLServerC#ASTIndex
- SQL Server在所有表中查詢(在整個庫搜尋內容)SQLServer
- 使用RecycleView實現無限滾動的日曆View
- 微信小程式實現簽到的日曆微信小程式
- 原生JavaScript實現造日曆輪子JavaScript
- SQL server資料庫高可用日誌傳送的方法SQLServer資料庫
- SQL Server資料庫調整表中列的順序操作方法及遇到問題SQLServer資料庫
- SQL Server中In-Flight日誌究竟有多大SQLServer
- SQL Server 2005效能調整二(zt)SQLServer
- SQL Server 中的 NOLOCK 到底是什麼意思?SQLServer
- 縱享絲滑滑動切換的周月日曆,水滴效果,豐富自定義日曆樣式,仿小米日曆(ViewDragHelper實現)View
- SQL Server 收縮日誌SQLServer
- 分享幾個實用的方法
- SQL 獲取SQL Server中兩個日期之間的所有日期SQLServer
- 五個實用的SQL Server PowerShell指令碼OMSQLServer指令碼
- 移動端日曆元件設計與實現元件
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- 基於 Hyperf+ SQL Server 實現的一個簡單資料庫 curdSQLServer資料庫
- win10電腦日曆怎麼顯示農曆_win10系統日曆顯示農曆的設定方法Win10
- win10系統全新日曆曝光:日曆整體的設計更加美觀易用Win10
- SQL Server的Merge —— 一步實現 insert,update,deleteSQLServerdelete
- PostgreSQL、Oracle/MySQL和SQL Server的MVCC實現原理方式OracleMySqlServerMVC
- 微信小程式開發05-日曆元件的實現微信小程式元件
- sql server中的一個坑-len與datalength區別SQLServer
- SQL Server 中的 ACID 屬性SQLServer
- 知道年月日,周幾,請算出某個月零某天后是星期幾,距離現在多少天(請用程式碼實現,謝絕呼叫 API方法)API
- PCB SQL SERVER 資料庫阻塞程式關係以思維導圖方式呈現的實現方法SQLServer資料庫
- SpringBoot專案實現日誌列印SQL明細(包括SQL語句和引數)幾種方式Spring BootSQL
- vue寫一個炫酷的日曆元件Vue元件
- 封裝一個簡單的日曆元件封裝元件