ruby on rails - Search by date works with SQLite but throws error ORA_00936 with Oracle -


मैं इस त्रुटि है:

OCIError: ORA-00,936: लापता अभिव्यक्ति:

< "T_ORDER_PRODUCT_ITEMS" ग्रुप दिनांक के आधार पर से> <कोड> COUNT का चयन करें (*) के रूप में count_all, तिथि ( "T_ORDER_PRODUCT_ITEMS"। "created_at") date_t_order_product_items_cre के रूप में पूर्व ( "T_ORDER_PRODUCT_ITEMS"। "created_at")

यह आईडी द्वारा समूह के साथ ठीक काम करता है।

मैं SQLite का उपयोग करता हूं और कुछ भी गलत नहीं । लेकिन जब मैं Oracle के साथ सर्वर पर अपलोड, मैं इस त्रुटि है

मैं SQLite में इस क्वेरी का उपयोग करें:

  लेन-देन :: OrderProductItem.group ( 'तिथि (created_at) ') .count  

SQLite एक कार्य है , लेकिन । नहीं ओरेकल

आप varchar से तारीख करने के लिए कन्वर्ट करने के लिए उपयोग करने की आवश्यकता:।

  COUNT का चयन करें (*) के रूप में count_all, TO_DATE ( "T_ORDER_PRODUCT_ITEMS" "created_at" " डीडी-MM-YYYY ") के रूप में date_t_order_product_items_cre - ^^^^^^^^^^^^ - से अपने दिनांक स्वरूप" "।" T_ORDER_PRODUCT_ITEMS T_ORDER_PRODUCT_ITEMS created_at "ग्रुप TO_DATE (द्वारा" "," डीडी-MM-YYYY "); - ^^^^^^^^^^^^ - अपने दिनांक स्वरूप  

जबकि सख्ती से आवश्यक नहीं है, यह स्पष्ट रूप से उपयोग करते समय दिनांक स्वरूप सेट करने के लिए एक अच्छा अभ्यास है <कोड > TO_DATE । अन्यथा, यह डिफ़ॉल्ट रूप से - और अगर यह जो भी कारणों से बदलता है, तो यह बगों को ट्रैक करना मुश्किल होगा।

SQLite,। लेकिन, ओरेकल में यह हमेशा एक DATE कॉलम में सीधे स्टोर करने के लिए बेहतर होता है। यह पूछताछ करते समय उड़ने पर रूपांतरण से बचने के लिए यह उल्लेख नहीं करता कि फ़ंक्शन का उपयोग करने से उस कॉलम पर आपके सूचकांक को अमान्य किया जा सकता है।

हालांकि, यदि आप वास्तव में एक क्रॉस-उत्पाद समाधान की जरूरत है , आपका सर्वश्रेष्ठ दांव शायद अपनी तिथि एक कोषगत तुलनीय दिनांक / समय स्वरूप का उपयोग कर स्ट्रिंग के रूप में स्टोर करने के लिए किया जाता है। जैसा - और पूरी तरह से एक उचित दिनांक प्रकार और / या तारीख कार्यों का उपयोग कर से छुटकारा पाने के। साधारण खोज / आदेश देने के लिए यह काम करेगा लेकिन अगर जटिलता में वृद्धि होगी आप तारीख घटकों को निकालने या गणना करने के लिए की आवश्यकता होगी जब।

कहा जा रहा है, अगर यह अपनी परियोजना दोनों SQLite और Oracle (और संभवतः अन्य डीबी) के साथ संगत होना करने के लिए के लिए एक आवश्यकता है , यह आपके कोड और उत्पन्न एसक्यूएल (अजगर के लिए की तरह बीच कुछ अमूर्त परत का उपयोग पर विचार हो सकता है लायक - मैं यकीन है कि इस तरह की चीजों के साथ-साथ रूबी के लिए मौजूद कर रहा हूँ :)।


Comments