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

SQL सर्वर में किसी दिनांक को छोटा करने का सबसे अच्छा तरीका क्या है?

निकटतम पूरे दिन . के चक्कर लगाने के लिए , व्यापक उपयोग में तीन दृष्टिकोण हैं। पहला वाला datediff . का उपयोग करता है 0 . के बाद से दिनों की संख्या ज्ञात करने के लिए दिनांक और समय। 0 datetime 1 जनवरी, 1900 से मेल खाती है। प्रारंभ तिथि में दिन के अंतर को जोड़कर, आपने पूरे दिन को पूर्णांकित कर दिया है;

select dateadd(d, 0, datediff(d, 0, getdate()))

दूसरी विधि टेक्स्ट आधारित है:यह टेक्स्ट विवरण को varchar(10) . के साथ छोटा करती है , केवल दिनांक भाग को छोड़कर:

select convert(varchar(10),getdate(),111)

तीसरी विधि इस तथ्य का उपयोग करती है कि एक datetime वास्तव में 1900 के बाद से दिनों की संख्या का प्रतिनिधित्व करने वाला एक अस्थायी बिंदु है। इसलिए इसे पूर्ण संख्या में गोल करके, उदाहरण के लिए floor का उपयोग करना , आपको दिन की शुरुआत मिलती है:

select cast(floor(cast(getdate() as float)) as datetime)

आपके दूसरे प्रश्न का उत्तर देने के लिए, सप्ताह की शुरुआत पेचीदा है। सप्ताह के दिन घटाना एक तरीका है:

select dateadd(dd, 1 - datepart(dw, getdate()), getdate())

यह एक समय का हिस्सा भी देता है, इसलिए आपको पहली तारीख तक पहुंचने के लिए इसे टाइम-स्ट्रिपिंग विधियों में से एक के साथ जोड़ना होगा। उदाहरण के लिए, @start_of_day . के साथ पठनीयता के लिए एक चर के रूप में:

declare @start_of_day datetime
set @start_of_day = cast(floor(cast(getdate() as float)) as datetime)
select dateadd(dd, 1 - datepart(dw, @start_of_day), @start_of_day)

वर्ष, माह, घंटे और मिनट की शुरुआत अभी भी "1 9 00 से अंतर" दृष्टिकोण के साथ काम करते हैं:

select dateadd(yy, datediff(yy, 0, getdate()), 0)
select dateadd(m, datediff(m, 0, getdate()), 0)
select dateadd(hh, datediff(hh, 0, getdate()), 0)
select dateadd(mi, datediff(mi, 0, getdate()), 0)

सेकेंड तक चक्कर लगाना 0 . के बाद से सेकंड की संख्या के बाद से, एक अलग दृष्टिकोण की आवश्यकता है अतिप्रवाह देता है। इसका एक तरीका यह है कि दिन की शुरुआत 1900 के बजाय संदर्भ तिथि के रूप में की जाए:

declare @start_of_day datetime
set @start_of_day = cast(floor(cast(getdate() as float)) as datetime)
select dateadd(s, datediff(s, @start_of_day, getdate()), @start_of_day)

पांच मिनट के आसपास , मिनट गोलाई विधि समायोजित करें। मिनट के अंतर का भागफल लें, उदाहरण के लिए /5*5 . का उपयोग करके :

select dateadd(mi, datediff(mi,0,getdate())/5*5, 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. SQL सर्वर में सोमवार को सप्ताह के पहले दिन के रूप में कैसे सेट करें?

  2. SQL सर्वर पुन:प्रारंभ करने योग्य अनुक्रमणिका:क्या यह आपके लिए अच्छा है?

  3. एडीओ पैरामीटरयुक्त क्वेरी के साथ चर @myvariable त्रुटि घोषित करनी चाहिए

  4. टी-एसक्यूएल में घुंघराले ब्रेसिज़

  5. मैं तालिका में सभी कॉलम कैसे खोज सकता हूं?