亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > sql server 自定義分割月功能詳解及實(shí)現(xiàn)代碼

sql server 自定義分割月功能詳解及實(shí)現(xiàn)代碼

熱門標(biāo)簽:安卡拉地圖標(biāo)注app 千呼電話機(jī)器人可以試用嗎 互聯(lián)網(wǎng)電話外呼系統(tǒng) 我要地圖標(biāo)注數(shù)量有限制嗎 400電話辦理泰安 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名 電銷需要外呼系統(tǒng)嗎 零成本地圖標(biāo)注賺錢 電話機(jī)器人怎么代理商

在最近的項(xiàng)目開發(fā)過程中,遇到了Sql server自動分割月的功能需求,這里在網(wǎng)上整理下資料.      

1、為何出現(xiàn)自定義分割月的需求

今天梳理一個(gè)平臺的所有函數(shù)時(shí),發(fā)現(xiàn)了一個(gè)自定義分割月函數(shù),也就是指定分割月的開始日索引值(可以從1-31閉區(qū)間內(nèi)的任何一個(gè)值)來獲取指定日期所對應(yīng)的分割月數(shù)值。這個(gè)函數(shù)當(dāng)時(shí)是為了解決業(yè)務(wù)部門獲取非標(biāo)準(zhǔn)月(標(biāo)準(zhǔn)月就是從每個(gè)月的第一天到最后一天組成一個(gè)完成的標(biāo)準(zhǔn)月份)的統(tǒng)計(jì)匯總數(shù)據(jù)的。例如:如果指定分割月的開始日索引值為5則表示某個(gè)月的5號到下個(gè)月的4號之間作為一個(gè)完整的分割月;同樣地如果指定分割月的開始日索引值為1則表示標(biāo)準(zhǔn)月等等。 

我仔細(xì)梳理了這個(gè)函數(shù)進(jìn)行了重構(gòu)簡化以及擴(kuò)展,該自定義分割月函數(shù)的實(shí)現(xiàn)區(qū)別之前寫的SQL Server時(shí)間粒度系列----第3節(jié)旬、月時(shí)間粒度詳解文章中將一個(gè)整數(shù)值和月份日期相互轉(zhuǎn)換功能,這個(gè)是按照標(biāo)準(zhǔn)月來實(shí)現(xiàn)的,雖然思路大致相同,但是并沒有針對之前的月份日期和整數(shù)值轉(zhuǎn)換函數(shù)對來進(jìn)行擴(kuò)展而是獨(dú)立開發(fā)新的功能函數(shù)。也是為了盡量做到函數(shù)功能職責(zé)單一性、穩(wěn)定性、可維護(hù)性以及可擴(kuò)展性。 

2、sql server實(shí)現(xiàn)自定義分割月功能 

自定義分割月功能函數(shù)包括兩個(gè)標(biāo)量函數(shù):ufn_SegMonths和ufn_SegMonth2Date。ufn_SegMonths獲取指定的日期在自定義分割月對應(yīng)的分割月數(shù)值;ufn_SegMonth2Date獲取指定一個(gè)分割月數(shù)值賭對應(yīng)的月份日期。 

sql server 版本的實(shí)現(xiàn)T-SQL代碼如下:

IF OBJECT_ID(N'[dbo].[ufn_SegMonths]', 'FN') IS NOT NULL
BEGIN
  DROP FUNCTION [dbo].[ufn_SegMonths];
END
GO
 
--==================================
-- 功能:根據(jù)自定義月開始索引值獲取指定日期所在的自定義月數(shù)。
-- 說明:自定義分割月數(shù) = 年整數(shù)值*100 + 當(dāng)前所在分割月值。
-- 環(huán)境:SQL Server 2005+。
-- 調(diào)用:SET @intSegMonths = dbo.fn_SegMonths('2008-01-14', 15)。
-- 創(chuàng)建:XXXX-XX-XX XX:XX-XX:XX XXX 創(chuàng)建函數(shù)實(shí)現(xiàn)。
-- 修改:XXXX-XX-XX XX:XX-XX:XX XXX XXXXXXXX。
--==================================
CREATE FUNCTION [dbo].[ufn_SegMonths]
(
   @dtmDate AS DATETIME            -- 日期
  ,@tntSegStartIndexOfMonth AS INT = 15    -- 自定義分割月開始索引值(1-31)
)
RETURNS INT
AS
BEGIN  
  IF (@tntSegStartIndexOfMonth = 0 OR @tntSegStartIndexOfMonth >= 32)
  BEGIN
    SET @tntSegStartIndexOfMonth = 15;
  END
 
  DECLARE
     @intYears AS INT
    ,@tntMonth AS TINYINT
    ,@sntDay AS SMALLINT;    
  SELECT
     @intYears = DATEDIFF(YEAR, '1900-01-01', @dtmDate)
    ,@tntMonth = DATEPART(MONTH, @dtmDate)
    ,@sntDay = DATEPART(DAY, @dtmDate);
 
  IF (@sntDay >= @tntSegStartIndexOfMonth)
  BEGIN
    SET @tntMonth = @tntMonth + 1;  
  END
 
  IF (@tntMonth > 12)
  BEGIN
    SELECT
       @intYears = @intYears + 1
      ,@tntMonth = @tntMonth - 12;
  END
 
  RETURN @intYears * 100 + @tntMonth;
END
GO
 
IF OBJECT_ID(N'[dbo].[ufn_SegMonths2Date]', 'FN') IS NOT NULL
BEGIN
  DROP FUNCTION [dbo].[ufn_SegMonths2Date];
END
GO
 
--==================================
-- 功能:獲取自定義分割月數(shù)對應(yīng)的自定義分割月日期。
-- 說明:自定義分割月日期 = 自定義分割月數(shù)/100對應(yīng)的年整數(shù)日期“組合”當(dāng)前所在分割月值。
-- 環(huán)境:SQL Server 2005+。
-- 調(diào)用:SET @dtmSegMonthDate = dbo.fn_SegMonths2Date(11602)。
-- 創(chuàng)建:XXXX-XX-XX XX:XX-XX:XX XXX 創(chuàng)建函數(shù)實(shí)現(xiàn)。
-- 修改:XXXX-XX-XX XX:XX-XX:XX XXX XXXXXXXX。;
--==================================
CREATE FUNCTION [dbo].[ufn_SegMonths2Date]
(
   @intSegMonths AS INT            -- 自定義分割月數(shù)
)
RETURNS DATETIME
AS
BEGIN    
  DECLARE @dtmDefaultBasedate AS DATETIME;
  SET @dtmDefaultBasedate = '1900-01-01';
 
  IF ((@intSegMonths IS NULL) OR (@intSegMonths = 0))
  BEGIN
    RETURN @dtmDefaultBasedate;
  END
 
  DECLARE
     @intYears AS INT
    ,@intMonth AS INT;  
  SELECT
     @intYears = @intSegMonths / 100
    ,@intMonth = @intSegMonths % 100;  
 
  RETURN DATEADD(MONTH, @intMonth - 1, DATEADD(YEAR, @intYears, @dtmDefaultBasedate));
END
GO
 

3、測試驗(yàn)證效果

 針對以上簡單的測試代碼如下:

DECLARE
   @dtmStartDate AS DATETIME
  ,@dtmEndDate AS DATETIME;
 
SELECT
   @dtmStartDate = '2000-01-01'
  ,@dtmEndDate = '2016-12-31';
 
SELECT
  [T1].*
  ,[dbo].[ufn_SegMonths2Date]([T1].[SegMonths]) AS SegMonthDate
FROM (
  SELECT
    [T].[CDate]
    ,[dbo].[ufn_SegMonths]([T].[CDate], 28) AS SegMonths
 
  FROM (
    SELECT
      DATEADD(DAY, [Num], @dtmStartDate) AS CDate
    FROM
      [dbo].[ufn_GetNums](0, DATEDIFF(DAY, @dtmStartDate, @dtmEndDate))
  ) AS T
  WHERE [T].[CDate] BETWEEN '2014-12-01' AND '2016-03-31'
) AS T1
WHERE DATEPART(DAY, [T1].[CDate]) >= 27
GO

效果截圖如下:

 注意:以上測試代碼使用了SQL Server數(shù)字輔助表的實(shí)現(xiàn)這邊文章的內(nèi)聯(lián)表值函數(shù)ufn_GetNums。

 4、總結(jié)語

這次是梳理平臺的功能性函數(shù)所進(jìn)行的重構(gòu)簡化以及擴(kuò)展的實(shí)現(xiàn)。盡量將日期有關(guān)的功能函數(shù)梳理出來,便于直接在sql server用戶數(shù)據(jù)庫中來使用, 也便于BI倉庫中使用。國慶一來已經(jīng)過去一周,原來打算一周一遍的計(jì)劃還是延期啦,再次嚴(yán)重檢討自己。

  感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • SqlServer中如何解決session阻塞問題
  • SqlServer 英文單詞全字匹配詳解及實(shí)現(xiàn)代碼
  • SqlServer編寫數(shù)據(jù)庫表的操作方式(建庫、建表、修改語句)
  • C#訪問SQLServer增刪改查代碼實(shí)例
  • SqlServer查詢和Kill進(jìn)程死鎖的語句
  • 獲取SqlServer存儲過程定義的三種方法
  • SQLServer主鍵和唯一約束的區(qū)別
  • SqlServer存儲過程實(shí)現(xiàn)及拼接sql的注意點(diǎn)
  • win2008 r2 服務(wù)器php+mysql+sqlserver2008運(yùn)行環(huán)境配置(從安裝、優(yōu)化、安全等)
  • SQLSERVER簡單創(chuàng)建DBLINK操作遠(yuǎn)程服務(wù)器數(shù)據(jù)庫的方法
  • SqlServer2008誤操作數(shù)據(jù)(delete或者update)后恢復(fù)數(shù)據(jù)的方法

標(biāo)簽:來賓 池州 濱州 文山 東營 新鄉(xiāng) 黃山 大同

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql server 自定義分割月功能詳解及實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  sql,server,自定義,分割,月,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql server 自定義分割月功能詳解及實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于sql server 自定義分割月功能詳解及實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产伦精品一区二区三区无广告| 在线观看导航| 毛片电影网| 一级女性大黄生活片免费| 日日日夜夜操| 一级女性大黄生活片免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产一区二区精品尤物| 亚洲第一色在线| 欧美大片毛片aaa免费看| 国产伦理精品| 九九精品在线播放| 一级女性全黄生活片免费| 成人a级高清视频在线观看| 亚洲 欧美 91| 国产伦久视频免费观看 视频 | 韩国三级香港三级日本三级la| 黄色免费网站在线| 毛片电影网| 久久国产一区二区| 国产91视频网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 色综合久久天天综合观看| 国产一区二区精品尤物| 天天做人人爱夜夜爽2020| a级精品九九九大片免费看| a级精品九九九大片免费看| 青青久久精品| 91麻豆精品国产高清在线| 国产成人精品影视| 日韩一级黄色| 日本特黄一级| 沈樵在线观看福利| 国产成人精品影视| 中文字幕97| 成人高清视频免费观看| 亚洲精品久久玖玖玖玖| 精品国产香蕉在线播出| 一级毛片看真人在线视频| 亚洲精品中文一区不卡| 日本在线不卡免费视频一区| 成人高清护士在线播放| 香蕉视频久久| 久久国产影院| 久久精品人人做人人爽97| 尤物视频网站在线观看| 国产成人啪精品| 国产国语对白一级毛片| 国产视频网站在线观看| 国产韩国精品一区二区三区| 亚欧视频在线| 黄色免费网站在线| 国产伦精品一区二区三区无广告| 在线观看导航| 日韩字幕在线| 国产伦精品一区三区视频| 天天做人人爱夜夜爽2020| 九九久久国产精品| 香蕉视频久久| 精品久久久久久中文字幕一区| 国产不卡在线看| 色综合久久手机在线| 欧美1卡一卡二卡三新区| 韩国三级香港三级日本三级la| 欧美1卡一卡二卡三新区| 久久精品人人做人人爽97| 欧美大片a一级毛片视频| 沈樵在线观看福利| 91麻豆精品国产综合久久久| 久久国产影院| 亚洲第一页乱| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久国产精品只做精品| 欧美a级片视频| 天天做日日干| 国产网站在线| 欧美激情一区二区三区中文字幕| 亚洲精品久久玖玖玖玖| 国产一区二区福利久久| 成人免费观看的视频黄页| 国产一区二区精品尤物| 美国一区二区三区| 国产一级强片在线观看| 天天色色色| 成人免费高清视频| 精品视频免费看| 日韩中文字幕在线亚洲一区| 国产成人精品影视| 夜夜操天天爽| 中文字幕97| 91麻豆精品国产自产在线| 精品国产一区二区三区国产馆| 国产高清视频免费| 黄色短视频网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日日夜夜婷婷| 亚洲 欧美 91| 韩国三级视频网站| 欧美另类videosbestsex视频| 天天做人人爱夜夜爽2020| 国产亚洲免费观看| 成人免费高清视频| 沈樵在线观看福利| 九九久久国产精品| 国产一区二区福利久久| 91麻豆精品国产综合久久久| 99久久精品国产国产毛片| 99久久精品国产国产毛片| 国产亚洲免费观看| 日本乱中文字幕系列| 国产精品123| 亚洲 欧美 91| 国产精品1024永久免费视频| 黄色福利片| 中文字幕一区二区三区精彩视频 | 一级毛片视频在线观看| 日本免费区| 黄视频网站在线看| 色综合久久手机在线| 国产一区免费观看| 日本特黄一级| 精品久久久久久影院免费| 久久精品人人做人人爽97| 青青久久精品| 欧美国产日韩久久久| 亚洲 国产精品 日韩| 亚洲精品久久玖玖玖玖| 国产激情一区二区三区| 一级女性全黄生活片免费| 国产不卡精品一区二区三区| 国产伦精品一区三区视频| 四虎影视久久久| 国产激情一区二区三区| 成人免费高清视频| 精品国产三级a∨在线观看| 国产成a人片在线观看视频| 成人在激情在线视频| 四虎影视久久久| 999精品在线| 精品久久久久久中文字幕一区| 国产成a人片在线观看视频| 91麻豆精品国产自产在线| 午夜激情视频在线播放| 一本高清在线| 欧美激情一区二区三区在线| 韩国三级视频网站| 国产麻豆精品hdvideoss| 国产麻豆精品hdvideoss| 国产原创视频在线| 国产成人女人在线视频观看| 国产激情一区二区三区| 国产精品自拍在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆国产级在线| 国产91素人搭讪系列天堂| 国产网站免费视频| 久久久久久久免费视频| 国产91素人搭讪系列天堂| 91麻豆tv| 国产网站在线| 成人a级高清视频在线观看| 99久久精品国产国产毛片| 九九免费精品视频| 国产一区二区福利久久| 91麻豆精品国产高清在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产福利免费观看| 二级特黄绝大片免费视频大片| 韩国妈妈的朋友在线播放| 精品视频在线观看一区二区 | 亚洲精品久久玖玖玖玖| 国产成人精品影视| 日韩avdvd| 韩国三级香港三级日本三级la| 国产韩国精品一区二区三区| 欧美激情一区二区三区在线 | 黄视频网站在线看| 91麻豆国产级在线| 夜夜操天天爽| 成人免费高清视频| 日韩中文字幕一区| 精品国产亚洲人成在线| 九九免费精品视频| 欧美另类videosbestsex高清| 一级女性大黄生活片免费| 欧美一区二区三区在线观看 | 成人免费高清视频| 欧美日本韩国| 韩国妈妈的朋友在线播放| 黄色福利片| 国产91精品一区| 午夜激情视频在线播放| 成人a级高清视频在线观看| 精品久久久久久中文字幕2017| 免费国产一级特黄aa大片在线| 精品视频一区二区三区| 国产精品自拍在线| 亚欧成人毛片一区二区三区四区| 欧美一区二区三区在线观看 | 亚洲 欧美 91|