Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में पिछले घंटे में जोड़ी गई पंक्तियाँ कैसे प्राप्त करें?

DATE_SUB() और NOW() के साथ

MySQL में **पिछले 1 घंटे** में डाली गई पंक्तियाँ प्राप्त करने के लिए DATE_SUB(NOW(), INTERVAL 1 HOUR) का उपयोग करके कटऑफ समय गणना करें।

सिंटैक्स

SELECT * FROM yourTableName 
WHERE yourDateTimeColumn >= DATE_SUB(NOW(), INTERVAL 1 HOUR);

नोट: मूल लेख में <= था जो गलत है (भविष्य की पंक्तियाँ देगा)। सही है >= (कटऑफ के बाद की पंक्तियाँ)।

व्यावहारिक उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE LastHourRecords (
    -> Id INT,
    -> Name VARCHAR(100),
    -> Login DATETIME
    -> );
Query OK, 0 rows affected (0.67 sec)

2. डेटा डालें (विभिन्न समय)

mysql> INSERT INTO LastHourRecords VALUES(1, 'John', '2018-12-19 10:00:00');
mysql> INSERT INTO LastHourRecords VALUES(2, 'Carol', '2018-12-19 10:10:00');
mysql> INSERT INTO LastHourRecords VALUES(3, 'Sam', '2018-12-19 10:05:00');
mysql> INSERT INTO LastHourRecords VALUES(4, 'Mike', '2018-12-18 12:10:00');  -- 1 दिन पुराना

3. सभी डेटा

mysql> SELECT * FROM LastHourRecords;
+------+-------+---------------------+
| Id   | Name  | Login               |
+------+-------+---------------------+
| 1    | John  | 2018-12-19 10:00:00 |
| 2    | Carol | 2018-12-19 10:10:00 |
| 3    | Sam   | 2018-12-19 10:05:00 |
| 4    | Mike  | 2018-12-18 12:10:00 |
+------+-------+---------------------+
4 rows in set (0.00 sec)

4. पिछले 1 घंटे की पंक्तियाँ (मान लें NOW = '2018-12-19 10:15:00')

mysql> SELECT * FROM LastHourRecords 
    -> WHERE Login >= DATE_SUB(NOW(), INTERVAL 1 HOUR);
+------+-------+---------------------+
| Id   | Name  | Login               |
+------+-------+---------------------+
| 1    | John  | 2018-12-19 10:00:00 |
| 2    | Carol | 2018-12-19 10:10:00 |
| 3    | Sam   | 2018-12-19 10:05:00 |
+------+-------+---------------------+
3 rows in set (0.00 sec)

माइक (1 दिन पुराना) बाहर रखा गया।

समय इकाई बदलें

INTERVAL 30 MINUTE   -- पिछले 30 मिनट
INTERVAL 1 DAY       -- पिछले 24 घंटे
INTERVAL 7 DAY       -- पिछले सप्ताह
INTERVAL 1 MONTH     -- पिछले महीने

प्रदर्शन अनुकूलन

  • Login कॉलम पर **इंडेक्स** बनाएं
  • DATE_SUB(NOW(), ...) क्वेरी में एक बार गणना होता है (सर्गेबल)
  • WHERE Login >= '2018-12-19 09:15:00' (स्थिर मान) और तेज

सापेक्ष समय एंकर

NOW() क्वेरी निष्पादन समय है। बैच प्रोसेसिंग के लिए निश्चित एंकर उपयोग करें:

WHERE Login >= '2018-12-19 09:15:00'  -- निश्चित समय
  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर

  1. - MySQL में सबक्वेरी और ORDER BY RAND से अंतिम 50 प्रविष्टियों में से 5 रैंडम पंक्तियाँ चुनें

    बड़ी टेबल से हाल की N पंक्तियों में से रैंडम नमूना लेने के लिए: पहले सबक्वेरी में ORDER BY id DESC LIMIT N से हाल की पंक्तियाँ लें, फिर बाहरी क्वेरी में ORDER BY RAND() LIMIT M लागू करें। टेबल बनाएं (केवल ID) mysql> CREATE TABLE DemoTable1853 ( UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY

  1. - MySQL में GROUP BY HAVING से समान ID वाली पंक्तियों का SUM निकालें

    GROUP BY + HAVING = 2000; उदाहरण डेटा insert into demo84 values(1,2000), (1,2000), (2,1800), (2,2200), (3,1700); परिणाम: कुल ≥ 2000 वाले ID +------+-------+ | id | Total | +------+-------+ | 1 | 4000 | | 2  | 4000 | +------+-------+ ID 1: 2000+2000 = 4000 ID 2: 1800+2200 = 4000 I