2012-07-26 6 views

उत्तर

0

यह वर्तमान माह की शुरुआत हो रहा है। जनवरी 1900 के बाद से महीनों की संख्या में गिना जाता है, और 1 जनवरी 1900 तक उन पर कहते चालू माह के शुरू

+0

मैंने हमेशा सोचा था कि दिन को 1 तक सेट करना एक ही परिणाम प्राप्त करेगा लेकिन यह बहुत आसान है? –

26

यह आप किसी दिए गए दिनांक

भीतरी चयन के लिए महीने के पहले दे देंगे पाने के लिए select DATEDIFF(MONTH, 0, GETDATE()) 1900-01-01

यहां से महीनों की संख्या दे देंगे यह है 1350

इस 1900/01/01 के लिए, लेकिन कुछ माह जोड़ने हो जाएगा,

select DATEADD(MONTH,1350,0) 2012-07-01 00: 00: 00.000

जो वर्तमान माह की शुरुआत होगी।

मुझे लगता है कि किसी भी तारीख के लिए एक महीने की शुरुआत करने का यह सबसे प्रभावी तरीका है।

0
The DATEDIFF will give you date diff in month from January 1 1900 to current date 
AND 
The DATEADD will add (DATEDIFF) results months to your last parameter of DATEADD 
0

DATEADD समारोह एक तारीख आप निर्दिष्ट करने के लिए एक अंतराल कहते हैं। उदाहरण के लिए, यदि SalesOrderHeader तालिका में सभी आदेशों की अंतिम तिथियों के 3 दिन फिसल गया, आप नए दिनांकों निम्नलिखित बयान के साथ प्राप्त कर सकते हैं:

USE AdventureWorks; 
GO 
SELECT DATEADD(day, 3, DueDate) 
FROM Sales.SalesOrderHeader; 
GO 

DateDiff समारोह की अवधि की गणना करता है आपके द्वारा निर्दिष्ट दो और दो तारीखों के बीच डेटपरेट्स में समय। दूसरे शब्दों में, यह दो तिथियों के बीच एक अंतराल पाता है। नतीजा एक हस्ताक्षरित पूर्णांक दिनांक दिनांक 2 के बराबर मान है - तारीख 1 में दिनांक 1। निम्न क्वेरी का उपयोग करता है की तारीख नवंबर 30, 2001, और पता चलता है कि DueDate और उस तारीख के बीच बीते दिनों की संख्या:

USE AdventureWorks; 
GO 
SELECT DATEDIFF(day, DueDate, 'Nov 30 2001') 
FROM Sales.SalesOrderHeader; 
GO 



SELECT DATEDIFF(year, '20051220', '20060101') 
SELECT DATEDIFF(month, '20051220', '20060101') 
SELECT DATEDIFF(day, '20051220', '20060101') 
3

DateDiff फ़ंक्शन कितने सेकंड, महीने, साल - जो कुछ भी अंतराल आप पहली तारीख (यहां 0) और दूसरी तारीख (वर्तमान तारीख) के बीच निर्दिष्ट करते हैं।

 DATEDIFF(MONTH, 0, '2-14-2014') --returns month. 0 is for 1/1/1900, and getdate is the current date 
    --(i used a set date bc dates will change as this post gets older). 
    result: 1381 

मेरे कामकाज में, मैंने 2-14-2014 की तारीख का उपयोग किया और मुझे 1/1/1900 के बाद से 1381 महीने दिए। मैं मूल रूप से तो जैसे DATEADD समारोह में 1381 कर दिया ...

 select Dateadd(MONTH, 1381, 0) 
    result: 2015-02-01 00:00:00.000 

, यह के पहले दिन हो जाता है जो कुछ महीने अंतरतम सूत्र की तारीख में निर्दिष्ट किया जाता है।

मुझे जो कोड पता लगाना था, वह एक कदम आगे बढ़ गया और उस परिणाम से 1 सेकंड घटा दिया गया ताकि इस महीने के आखिरी दिन 11:59:59 बजे ...

 select DATEADD(s, -1, '2015-02-01 00:00:00.000') 

फॉर्मूला सभी को एक साथ रखा इस तरह दिखता है:

 DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1,0)) 

आशा इस कोई मदद करता है। :)

संबंधित मुद्दे