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

रेल `कहां` प्रश्नों से कम समय के लिए

2 5/9/20 संपादित करें

यदि आप रूबी 2.6 का उपयोग कर रहे हैं तो आप इसे अंतहीन श्रेणियों के साथ कर सकते हैं और रूबी 2.7 में आप शुरुआत-रहित श्रेणियों का उपयोग कर सकते हैं।

उदा.:

# Ruby >= 2.6
User.where(last_deposit: 10.days.ago..)

उत्पन्न करता है

SELECT "users".* FROM "users" WHERE "user"."last_deposit" >= '2020-04-29 21:58:39.109419'"

और

# Ruby >= 2.7
User.where(last_deposit: ..10.days.ago)

उत्पन्न करता है

SELECT "users".* FROM "users" WHERE "users"."last_deposit" <= '2020-04-29 22:01:05.582055'

संपादित करें

यह अब रेल 5 में संभव है!

User.where(last_deposit: 10.days.ago..DateTime::Infinity.new)

SQL उत्पन्न करेगा

SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` >= '2018-06-30 17:08:54.130085').

मूल (और रेल <5) उत्तर

ऐसा प्रतीत नहीं होता है कि बुनियादी where . का उपयोग करने का कोई तरीका है टाइमस्टैम्प के लिए क्वेरी से अधिक या कम उत्पन्न करने के लिए हैश सिंटैक्स। मेरे प्रश्न में Current Simple Solution . के तहत सबसे सरल और सबसे पठनीय तरीका बताया गया है ।

ऐसा करने का एक और तरीका एआरईएल का उपयोग करता है लेकिन आपको कुछ कम आम तौर पर देखी जाने वाली कॉलें करनी होंगी। सबसे पहले आप एआर क्लास 'एआरएल टेबल पर एक हैंडल प्राप्त कर सकते हैं, कॉलम तक पहुंच सकते हैं, gt से अधिक का परिणाम पास कर सकते हैं , gteq . से बड़ा या उसके बराबर , lt . से कम , और/या lteq . से कम या बराबर where . के तर्क के साथ विधि ।

ऊपर की स्थिति में ऐसा किया जाएगा:

last_deposit_column = User.arel_table[:last_deposit]
last_deposit_over_ten_days_ago = last_deposit_column.gteq(10.days.ago)
User.where(last_deposit_over_ten_days_ago)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विदेशी कुंजी बाधा के साथ तालिका बनाना विफल हो जाता है गलत तरीके से बनाया गया है

  2. क्या किसी क्वेरी को एक रिकॉर्ड तक सीमित करने से प्रदर्शन में सुधार होता है

  3. बाइनरी टैरबॉल से MySQL 8 सेट करें

  4. application.ini . में डेटाबेस टाइम ज़ोन कैसे सेट करें

  5. BufferedInputStream को इमेज में बदलें