1. 程式人生 > >SQL 輸出某一天所在的年月對應的所有星期的開始與結束日期(每個月僅算4周,第四周可能會有10天)

SQL 輸出某一天所在的年月對應的所有星期的開始與結束日期(每個月僅算4周,第四周可能會有10天)

背景:有時侯導報表需要動態計算每個月對應每週的第一天與最後一天。最後一週的時間要求不需要僅精確到第7天,可以算10天。

USE [***]
GO

/****** Object:  StoredProcedure [dbo].[sp_CalcStartDateEndDateForSingleYearMonthInDate]    Script Date: 2016/2/25 14:28:26 ******/
DROP PROCEDURE [dbo].[sp_CalcStartDateEndDateForSingleYearMonthInDate]
GO

/****** Object:  StoredProcedure [dbo].[sp_CalcStartDateEndDateForSingleYearMonthInDate]    Script Date: 2016/2/25 14:28:26 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO







/*
	
	exec [sp_CalcStartDateEndDateForSingleYearMonthInDate] '2016-1-1'
	exec [sp_CalcStartDateEndDateForSingleYearMonthInDate] '2015-10-1'
	exec [sp_CalcStartDateEndDateForSingleYearMonthInDate] '2015-9-1'
	exec [sp_CalcStartDateEndDateForSingleYearMonthInDate] '2014-3-1'

*/

CREATE PROC [dbo].[sp_CalcStartDateEndDateForSingleYearMonthInDate](
	@SingleDate datetime
)
AS
BEGIN
   
	    
	DECLARE @month VARCHAR(2)
	DECLARE @year VARCHAR(4)

	DECLARE @FirstDayInFeb DATETIME
	DECLARE @LastDayInFeb DATETIME

	if(@SingleDate is null)
		set @SingleDate=getdate()

	SET @month= MONTH(@SingleDate)
	SET @year=YEAR(@SingleDate)

	SET @FirstDayInFeb = CONVERT(DATETIME, @year+'-02-01')
	SET @LastDayInFeb = DATEADD(M, 1, @FirstDayInFeb)
	SET @LastDayInFeb = DATEADD(D, -1, @LastDayInFeb)


	--drop table @tWeek

	--CREATE TABLE @tWeek
	--(
	--startDate VARCHAR(10),
	--endDate VARCHAR(10),
	--weekIndex INT
	--)

	declare  @tWeek TABLE
	 (
		startDate VARCHAR(10),
		endDate VARCHAR(10),
		weekIndex INT
	)

	INSERT INTO @tWeek VALUES  ( @year+'-'
[email protected]
+'-1',@year+'-'[email protected]+'-7', 1) INSERT INTO @tWeek VALUES ( @year+'-'[email protected]+'-8',@year+'-'[email protected]+'-14', 2) INSERT INTO @tWeek VALUES ( @year+'-'[email protected]+'-15',@year+'-'[email protected]+'-21', 3) IF @month IN (1,3,5,7,8,10,12) INSERT INTO @tWeek VALUES ( @year+'-'
[email protected]
+'-22',@year+'-'[email protected]+'-31', 4) IF @month IN (4,6,9,11) INSERT INTO @tWeek VALUES ( @year+'-'[email protected]+'-22',@year+'-'[email protected]+'-30', 4) IF @month=2 INSERT INTO @tWeek VALUES ( @year+'-'[email protected]+'-22', CONVERT(VARCHAR(10),@LastDayInFeb,120),4) SELECT * FROM @tWeek END GO

執行結果:


相關推薦

SQL 輸出所在的年月對應所有星期開始結束日期每個4四周可能10

背景:有時侯導報表需要動態計算每個月對應每週的第一天與最後一天。最後一週的時間要求不需要僅精確到第7天,可以算10天。 USE [***] GO /****** Object: StoredProcedure [dbo].[sp_CalcStartDateEndDate

PHP獲取日期對應星期週日期、星期開始結束日期的方法

本文例項講述了PHP獲取日期對應星期、一週日期、星期開始與結束日期的方法。分享給大家供大家參考,具體如下: /* * 獲取日期對應的星期 * 引數$date為輸入的日期資料,格式如:2018-6-22 */ function get_week($date) { //強制轉換日期格式 $d

sql修改列值

  select distinct stationcode from [AirDB_CC].[dbo].[T_MON_AIRSTATIONHOUR]   where STATIONCODE not in     (select distinct sta

linux下檢視程式佔記憶體

原文:https://blog.csdn.net/rickiyeat/article/details/70230253  第一種方式 top -p 程序號 1 [[email protected] micro-service]$ top -p 20490 top

sql 查詢除欄位外的所有欄位

方法1.     直接寫         select   列1,列2...列n   from   你的表           方法2.     從syscolumns中提出欄位資訊,用生成SQL語句的方法         declare   @sql   varchar(8

sql 建立使用者只能查詢訪問某些表或檢視

use Charges GO ----------刪除-架構-角色-使用者----------------------------------------------- DROP SCHEMA [YXUSER] GO DROP SCHEMA [YX_VIEW] GO DRO

sql 查詢年資料

資料庫查詢某年資料(sql server) select *from 表名 where YEAR(存時間的欄位名) =某年select *from News where YEAR(addDate) =

一個小C問題:計算從1970年到時期經歷的秒數

部落格目錄:       一、常識;       二、常用的函式舉例;       三、解決一個問題;                                                                                

js中for定時輸出迴圈輸出陣列

<!DOCTYPE html> <html> <head> <title></title> </head> <body&

sql 查詢欄位包含特定字元的數量

select case when bus_scope like '%婚紗攝影%' then 1 when bus_scope like '%婚慶策劃%' then 2 when bus_scope like '%婚慶裝置%' then 3

c#讀取dbf檔案並輸出

private void button1_Click(object sender, EventArgs e) { string constr = "Provid

sql根據欄位值的不同關聯不同的表

一.資料庫資料資料 deed_records sport_records match_ticket_record 二.sql語句 SELECT d.integral , CASE WHEN d.deed_type=1 THEN (SELECT s.user_id FR

如何最快速的找到頁面元素繫結的點選事件並檢視js程式碼

比如我要檢視銀行賬號這個標籤所繫結的事件。 操作過程中使用的是谷歌瀏覽器 第一步:在該元素上右鍵→檢查 第二步:點選Event Listeners 這樣就能看到該元素繫結的所有事件了 第三步:展開click,我們可以看到該元素所繫結點選事件的方法就在 jquery-

VBA取使用的單元格數

Debug.Print Worksheets(1).[A65536].End(xlUp).Row 完整介紹Excel End(xlUp).Row 一、End(xlUp).Row介紹 功能是返回一個 Range 物件,該物件代表包含源區域的區域尾端的單元格。等同於

殺了兩千宦官袁紹也曾仗義過為東漢徹底除去了宦官禍害

-s 大小 都在 name 技術分享 spa 人生 便在 哥哥 一天殺了兩千宦官,袁紹人生中讓人忽略的一起暴行 送交者: hgao[★★★★天山隱士★★★★] 於 2017-07-29 14:07 已讀 195 次 大字閱讀 在前面的

利用C++獲取資料夾下的所有檔名並獲取不帶字尾的檔名字

來源:https://www.cnblogs.com/fnlingnzb-learner/p/6424563.html 那麼到底如何查詢檔案呢?我們需要一個結構體和幾個大家可能不太熟悉的函式。這些函式和結構體在<io.h>的標頭檔案中, 結構體為struct _finddata_t

c#如何獲取名稱空間下的所有的類的資訊

如果是當前下的。用Assembly.GetExecutingAssembly().GetTypes(); 如果是外部DLL,用Assembly.Load("namespace").GetTypes(); 原理是反射,所以上面一定要加上using System.Reflect

grep技巧(-r):在目錄下遞迴[所有子目錄]查詢字串:+檔案路徑

轉自:http://zhumeng8337797.blog.163.com/blog/static/1007689142011350151438/ 在某一目錄下遞迴[所有子目錄]查詢某一字串: grep -r “字串” 目錄名 就是加一個-r引數,請看man page:

函式:輸出一個範圍數字中的所有質數

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>輸出某一個範圍數字中的所有質數</title>

同時修改個數據庫中所有表的所有欄位的編碼格式mysql

最近在進行原始碼的二次開發,突然之間有了一個小的需求,就這麼悄悄的突然出現了。 需求原因就不說了,只說這個怎麼實現的。我是用的是mysql資料庫,其他的略有不同,具體到哪一點就只能具體變化了。 看網上有的說直接把資料庫或者表的編碼做改變就行了,可是這樣對欄位來說都沒有影響。