SQL查某年某月有幾天的方法
BOSS表示不論要查詢的月份&產線是否每天都有可動率及PPLH,都要列在圖表中,一開始的做法是在C#中不論查幾年幾月都塞31天,但若圖表在呈現時查詢的月份明明沒有31天(EX:2月只有28天)卻在圖表中列出來,即使表的row中是沒有值的但難免會令看的人感到突兀,主要方法及參考資料包含以下前輩的文章: 1.整體結構-利用數值序列產生當月日曆資料( SQL QnA -部落格 2.計算某初始日期加上一個數值後,傳回日期的方法( 我的Coding之路 -部落格) 3.日期格式轉換方法( 資訊園 -部落格) 4.T-SQL-master..spt_values應用( -Ma の 筆記本- -部落格) -------------------------我是分割線,以下可照搬到SQL中執行查詢-------------------------------------- SELECT number + 1 AS N --number是0開始所以要+1否則欄位N會從0開始 ,CONVERT(VARCHAR(10), DATEADD(DD, number, CONVERT(CHAR(8), '2017-02-', 111) + '01'), 120) AS DT --DATEADD函數以天為單位,number為指定數值,再指定起始日期'2017-02-01',最後再CONVERT一次日期格式 FROM master.dbo.spt_values WHERE NAME IS NULL --不好解釋但實際去spt_values表看NAME IS NULL前後有什麼差就可以懂了 AND number < DAY(DATEADD(MM, 1, CONVERT(CHAR(8), '2017-02-', 111) + '01') - 1) -- <右邊是把月底算出來,用的是下個月初減1底即得本月底的概念 ------------------------------------------------------------------------------------------------------------------------ --