MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB क्वेरी से जोडा डेटाटाइम में प्राप्त वर्ष और वर्ष का सप्ताह कैसे परिवर्तित करें?

ISO 8601

जोडा-टाइम ISO 8601 का अनुसरण करता है सप्ताहों को परिभाषित करने में मानक ।

  • सोमवार सप्ताह का पहला दिन है।
  • सप्ताह की संख्या 1 से 52 या 53 तक होती है।
  • सप्ताह की संख्याएं अपरकेस W के साथ लिखी जाती हैं , जैसे W23 .
    वर्ष जोड़ा जा सकता है, 2015-W23
  • सप्ताह # 1, W01 , में वर्ष का पहला गुरुवार शामिल है।

जहां तक ​​मुझे पता है, यह मानक परिभाषा विभिन्न देशों और उद्योगों में उपयोग में अधिक आम होती जा रही है।

रविवार सप्ताह

MongoDB doc सप्ताह को इस प्रकार परिभाषित करता है:

जहां तक ​​मुझे पता है, यह ज्यादातर अमेरिकी परिभाषा है, अमेरिका के बाहर ज्यादा इस्तेमाल नहीं किया जाता है।

वह परिभाषा 0 से 53 क्यों कहती है? इसका अर्थ है "54 सप्ताह तक"। मुझे नहीं लगता कि यह परिभाषा किसी भी वर्ष में 54 सप्ताह का उत्पादन करेगी, लेकिन मैंने इस पर विचार नहीं किया है।

क्यों मिक्स करें?

आप वास्तव में दो परिभाषाओं को नहीं मिला सकते हैं। क्यों परेशान होना? यदि आपका लक्ष्य MongoDB की सप्ताहों की परिभाषा का उपयोग करना है, और उन्हें दिनांक-समय द्वारा प्रस्तुत करना है, तो अपना स्वयं का कनवर्टर लिखें।

मेरी अपनी सलाह होगी कि MongoDB की परिभाषा और कार्य को छोड़ दें, और मानक परिभाषा के साथ रहें।

रविवार को ढूंढें

यदि आप मोंगोडीबी की दुनिया में एक सप्ताह से शुरू होने वाले रविवार को खोजना चाहते हैं, तो अपना खुद का छोटा कार्य लिखें। वर्ष संख्या और सप्ताह संख्या में फ़ीड करें, और डेटटाइम वापस प्राप्त करें। इस परिदृश्य में, आपको Joda-Time की सप्ताह-दर-वर्ष सुविधाओं की कोई आवश्यकता नहीं है।

कुछ इस तरह।

int yearNumber = 2015;
int weekNumber = 0;

LocalDate firstWeekSunday = null;
LocalDate firstOfYear = new LocalDate ( yearNumber, 1, 1 );
if ( firstOfYear.getDayOfWeek ( ) == DateTimeConstants.SUNDAY ) {
    firstWeekSunday = firstOfYear;
} else { // ELSE not Sunday.
    firstWeekSunday = firstOfYear.minusDays ( firstOfYear.getDayOfWeek ( ) );  // Joda-Time uses standard ISO 8601 weeks, where Monday = 1, Sunday = 7.
}
LocalDate sunday = firstWeekSunday.plusWeeks ( weekNumber );

DateTimeZone zone = DateTimeZone.forID ( "America/Montreal" );
DateTime dateTime = sunday.toDateTimeAtStartOfDay ( zone );

कंसोल पर डंप करें।

System.out.println ( "Sunday-based week of year:" + yearNumber + " week: " + weekNumber + " starts: " + sunday + "." );
System.out.println ( "Adjusted to time zone: " + zone + " is: " + dateTime + "." );

जब दौड़ें।

Sunday-based week of year:2015 week: 0 starts: 2014-12-28.
Adjusted to time zone: America/Montreal is: 2014-12-28T00:00:00.000-05:00.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB एकत्रीकरण के साथ घटनाओं के संग्रह से रैखिक फ़नल, क्या यह संभव है?

  2. Mongodb में एकत्रीकरण क्वेरी द्वारा लौटाए गए दस्तावेज़ों को कैसे हटाएं

  3. एक ही क्वेरी में बाहरी और भीतरी एम्बेडेड सरणी दोनों की गणना करें

  4. नेवला डुप्लीकेट कुंजी त्रुटि upsert के साथ

  5. अनुक्रमित फ़ील्ड के साथ MongoDB नियमित अभिव्यक्ति