Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2005 में महीनों के आधार पर दिनांक सीमाओं को कैसे विभाजित करें

सीटीई का उपयोग करना:

DECLARE @Begin DATETIME
DECLARE @End DATETIME

SELECT @Begin = '20110101', @End = '20120101'

;WITH ranges(DateFrom, DateTo) AS
(
  SELECT @Begin, DATEADD(DAY, -1, DATEADD(MONTH, 1, @begin))
  UNION ALL
  SELECT DATEADD(month, 1, DateFrom), DATEADD(DAY, -1, DATEADD(MONTH, 2, DateFrom))
  FROM ranges
  WHERE DateFrom < @End
)
SELECT * FROM ranges
OPTION(MAXRECURSION 0)

और सीटीई का उपयोग नहीं करना:

DECLARE @Begin DATETIME
DECLARE @End DATETIME

SELECT @Begin = '20110101', @End = '20120101'

SELECT DATEADD(MONTH, n.Number, @Begin) DateFrom, DATEADD(day, -1, DATEADD(MONTH, n.Number+1, @Begin)) DateTo
FROM master.dbo.spt_values n
WHERE 
    n.Number < DATEDIFF(MONTH, @begin, @end)
AND n.Type = 'P'

अगर आपको जनवरी 2012 को भी शामिल करना है, तो इसका इस्तेमाल करें

DECLARE @Begin DATETIME
DECLARE @End DATETIME

SELECT @Begin = '20110101', @End = '20120101'

SELECT DATEADD(MONTH, n.Number, @Begin) DateFrom, DATEADD(day, -1, DATEADD(MONTH, n.Number+1, @Begin)) DateTo
FROM master.dbo.spt_values n
WHERE 
    n.Number <= DATEDIFF(MONTH, @begin, @end)
AND n.Type = 'P'

और सीटीई:

DECLARE @Begin DATETIME
DECLARE @End DATETIME

SELECT @Begin = '20110101', @End = '20120101'

;WITH ranges(DateFrom, DateTo) AS
(
  SELECT @Begin, DATEADD(DAY, -1, DATEADD(MONTH, 1, @begin))
  UNION ALL
  SELECT DATEADD(month, 1, DateFrom), DATEADD(DAY, -1, DATEADD(MONTH, 2, DateFrom))
  FROM ranges
  WHERE DATEADD(month, 1, DateFrom) < @End
)
SELECT * FROM ranges
OPTION(MAXRECURSION 0)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल में, मैं बिटमास्क कुल में मानों को अल्पविराम सीमांकित स्ट्रिंग में कैसे विभाजित कर सकता हूं?

  2. डेटाबेस, एसएमओ, सी # के लिए विफल बनाएँ

  3. SQL सर्वर डेटाबेस को पुनर्स्थापित करना - मास्टर कुंजी नहीं खुल रही है

  4. SQL में गुणन कुल ऑपरेटर

  5. SQL सर्वर 2005 में पहली पंक्ति छोड़ें?