2010-07-07 11 views
5

मैंमैं डेटेड एसक्यूएल में घंटे, मिनट, सेकेंड कैसे जोड़ूं?

तो आज होगा 2010/07/07 12:00:00 2010/07/07 11:59:59 बजे

को तो है कि पूरा किया जाना चाहिए एक पूरे तिथि प्राप्त करना चाहते हैं 12:00:00 बजे से 24 घंटे तब 8 वां होगा।

तो मैं इस

select DATEADD(??, ??, DATEDIFF(dd, 0, GETUTCDATE())) 

मैं इसे कैसे यह करने के लिए 23 घंटे 59mins और 59seconds जोड़ने कैसे करूं?

उत्तर

5
DECLARE @start DATETIME 
DECLARE @end DATETIME 

SET @start = DATEADD(dd, 0, DATEDIFF(dd, 0, GETUTCDATE())) 
SET @end = DATEADD(dd, 1, DATEADD(ms, -3, @start)) 
+0

क्या यह बेहतर है? क्या यह इस दौड़ की स्थिति का सामना करेगा? – chobo2

+0

@ chobo2: यह 'GETUTCDATE() 'को कॉल करके' @ start' के संबंध में '@ end' की गणना करता है दूसरी बार, इसलिए यह दौड़ की स्थिति के लिए कमजोर नहीं है। (संभावना नहीं) घटना में दो तारीखों के बीच मध्यरात्रि में तारीख लगती है तो सीमा अभी भी एक दिन होगी। – LukeH

3

इस प्रयास करें:

DATEADD(second, -1, DATEADD(DAY, 1,"7/7/2010 12:00:00"))

+0

हम्म मैं यह मुश्किल निश्चित रूप से कोडित नहीं हो सकता। तो मैंने आपके पास जो कुछ लिया और इसे बनाया, यह काम करने लगता है लेकिन फिर मुझे नहीं पता कि मैंने वास्तव में क्या किया है DATEADD (डीडी, 0, DATEDIFF (डीडी, 0, GETUTCDATE())) और DATEADD (एसएस, -1 , DATEDIFF (डीडी, -1, GETUTCDATE()) – chobo2

+0

@ chobo2: आपकी टिप्पणी में कोड के साथ दौड़ की स्थिति का एक छोटा सा मौका है - यदि दिनांक पहले कथन के बीच आधी रात को टिकता है और दूसरा आप समाप्त हो जाएंगे एक श्रेणी के साथ जिसमें एक से दो दिन शामिल होते हैं। – LukeH

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