मेरे पास डेटाबेस में एक कॉलम (scheduledStartDateTime) है जो datetime प्रकार का है और मुझे datetime दर्ज किए गए उपयोगकर्ता के आधार पर डेटा की पिछली पंक्ति खोजनी है।

मेरी क्वेरी इस तरह है:

   order = self.trips_session.query(Order).filter(
                and_(
                    Order.driverSystemId == driver_system_id,
                    func.date(Order.scheduledStartDateTime) < func.date(start_date)
                )).order_by(
                DispatchOrder.scheduledStartDateTime.desc()).first()

enter image description here

मेरी खोज तिथि 2020-01-13 07:16:06 है, ई ऑर्डर नंबर 5673 इसलिए आदर्श रूप से मैं ऑर्डर नंबर 5677 ढूंढ रहा हूं लेकिन मुझे 5679 मिल रहा है। मैं घंटे मिनट और सेकंड के आधार पर तिथियों की तुलना कैसे कर सकता हूं।

0
divyanayan awasthi 16 जिंदा 2020, 14:43

1 उत्तर

सबसे बढ़िया उत्तर

तो आप एक datetime को कनवर्ट करना चाहते हैं, हालांकि func.date() datetime को date में बदल देता है, इसलिए आप घंटे/मिनट/सेकंड खो रहे हैं। आपको अपना डेटाटाइम डाले बिना, सामान्य रूप से तुलना करने की आवश्यकता है:

  order = self.trips_session.query(Order).filter(
                and_(
                    Order.driverSystemId == driver_system_id,
                    Order.scheduledStartDateTime < start_date
                )).order_by(
                DispatchOrder.scheduledStartDateTime.desc()).first() 

वैकल्पिक रूप से, यदि प्रदान किए गए डेटाटाइम में से कोई एक datetime प्रारूप में नहीं है, तो आप समय की जानकारी खोए बिना इसे/उन्हें कास्ट करने के लिए func.datetime() का उपयोग कर सकते हैं।

0
Giorgos Myrianthous 16 जिंदा 2020, 12:04