CodeGym/Java Course/All lectures for HI purposes/दिनांक कार्य, व्यावहारिक उदाहरण

दिनांक कार्य, व्यावहारिक उदाहरण

उपलब्ध

पिछले 30 दिनों में घटनाओं की तलाश में

एक अन्य सामान्य कार्य उन पंक्तियों की खोज करना है जो एक विशिष्ट तिथि सीमा से संबंधित हैं। सिद्धांत रूप में, यह मुश्किल नहीं है यदि सीमा की प्रारंभ और समाप्ति तिथियां निश्चित हैं: एसक्यूएल तिथियों के साथ-साथ संख्याओं की तुलना कर सकता है।

तुलना ऑपरेटरों को तारीखों पर लागू किया जा सकता है: < , > , <= , आदि। इसके अलावा, एक विशेष BETWEEN ऑपरेटर है जो तारीखों के साथ भी काम कर सकता है। उदाहरण के लिए, आइए एक प्रश्न लिखते हैं जो कार्य तालिका से उन सभी कार्यों का चयन करेगा जिन्हें 2022 की गर्मियों में करने की आवश्यकता है। अनुरोध इस तरह दिखेगा:

SELECT * FROM task  
WHERE task.deadline BETWEEN '2022-06-01' AND '2022-08-31'

इस प्रश्न का परिणाम होगा:

पहचान कर्मचारी_आईडी नाम अंतिम तारीख
1 1 दृश्यपटल पर एक बग ठीक करें 2022-06-01
2 2 बैकएंड पर एक बग ठीक करें 2022-06-15
3 5 कॉफी खरीदें 2022-07-01
4 5 कॉफी खरीदें 2022-08-01

लेकिन अनुरोध में क्या लिखना है यदि हम कार्य प्राप्त करना चाहते हैं, उदाहरण के लिए, पिछले 30 दिनों के लिए। जहां पिछले 30 दिन सीधे क्वेरी निष्पादन समय से जुड़े होते हैं। यानी अगर 25 जुलाई को क्वेरी की जाती है, तो आपको 25 जून से 24 जुलाई तक की तारीखों का चयन करना होगा। दिनांक सीमा को वर्तमान समय से कैसे बांधें?

ऐसा करने के लिए, दिनांक जोड़ने के फ़ंक्शन का उपयोग करें:

DATE_ADD (date, INTERVAL expression units)

मुझे लगता है कि कुछ उदाहरणों के साथ व्याख्या करना आसान होगा:

# अनुरोध परिणाम
1 DATE_ADD('2022-06-04', अंतराल 5 दिन) 2022-06-09
2 DATE_ADD('2022-06-04', अंतराल 4 सप्ताह) 2022-07-02
3 DATE_ADD('2022-06-04', 2 महीने का अंतराल) 2022-08-04
4
5 DATE_SUB('2022-06-04', अंतराल 5 दिन) 2022-05-30
6 DATE_SUB('2022-06-04', अंतराल 4 सप्ताह) 2022-05-07
7 DATE_SUB('2022-06-04', 2 महीने का अंतराल) 2022-04-04

वैसे, एक निश्चित तारीख से एक निश्चित संख्या में दिन, सप्ताह, महीने और साल भी घटाए जा सकते हैं।

और अगर हम अपने अनुरोध पर वापस लौटते हैं - पिछले 30 दिनों का डेटा प्राप्त करने के लिए, तो हमें इस सीमा में दो तिथियों की आवश्यकता होती है:

  • करडेट () - सीमा का अंत
  • DATE_SUB( CURDATE() , INTERVAL 30 DAY) - श्रेणी की शुरुआत

अनुरोध इस तरह दिखेगा:

SELECT * FROM task WHERE task.deadline  
BETWEEN DATE_SUB( CURDATE() , INTERVAL 30 DAY) AND CURDATE() 

इस प्रश्न का परिणाम इस प्रकार होगा (मेरे पास आज 4 जून, 2022 है):

पहचान कर्मचारी_आईडी नाम अंतिम तारीख
1 1 दृश्यपटल पर एक बग ठीक करें 2022-06-01

कैसे दो तिथियों के बीच अंतर खोजने के लिए

और एक और उपयोगी सुविधा। कभी-कभी आपको दिनों में दो तिथियों के बीच के अंतर की गणना करने की आवश्यकता हो सकती है। ऐसा करने के लिए, SQL का एक विशेष कार्य है - DATEDIFF ()।

उसके साथ काम करना बहुत आसान है:

DATEDIFF (date 1, date 2)

दूसरी तारीख को पहली तारीख से घटाया जाता है। यदि दिनांक 2 दिनांक 1 के बाद आता है, तो परिणाम ऋणात्मक होगा।

वैसे, हम DATEDIFF() function का उपयोग करके अपनी पिछली क्वेरी को फिर से लिख सकते हैं। हमें कार्य तालिका से सभी कार्यों का चयन करने की आवश्यकता है जिनकी समय सीमा वर्तमान तिथि से 30 दिनों से अधिक भिन्न नहीं है। यहाँ वह अनुरोध कैसा दिखेगा:

SELECT * FROM task WHERE DATEDIFF(task.deadline, CURDATE() ) < 30

इस प्रश्न का परिणाम इस प्रकार होगा (मेरे पास आज 4 जून, 2022 है):

पहचान कर्मचारी_आईडी नाम अंतिम तारीख
1 1 दृश्यपटल पर एक बग ठीक करें 2022-06-01
2 2 बैकएंड पर एक बग ठीक करें 2022-06-15
3 5 कॉफी खरीदें 2022-07-01

इस बार, SQL को तीन पंक्तियाँ मिलीं। इस बारे में सोचें कि पिछली बार एक लाइन क्यों थी और इस बार तीन हैं?

टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं