sql >> Databasteknik >  >> RDS >> Mysql

Hur man får poster mellan 2 datum i MySQL

Många gånger behöver du få data mellan 2 datum för rapportering och analys. Det är ganska enkelt att få poster mellan 2 datum i MySQL trots att det inte finns någon inbyggd funktion för det. Här är SQL för att välja poster mellan 2 datum i MySQL, PostgreSQL och SQL Server.

Hur man får poster mellan 2 datum i MySQL

Här är SQL för att få poster mellan 2 datum i MySQL.

Låt oss säga att du har följande tabell försäljning(orderdatum, rea)

mysql> create table sales(order_date date,sale int);

mysql> insert into sales(order_date,sale)
     values('2020-06-01',250),
     ('2020-06-0',350),
     ('2020-06-02',400),
     ('2020-06-03',250),
     ('2020-06-04',200),
     ('2020-06-05',180),
     ('2020-06-06',150),
     ('2020-06-07',650),
     ('2020-06-08',500),
     ('2020-06-09',150);

mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-01 |  250 |
| 2020-06-00 |  350 |
| 2020-06-02 |  400 |
| 2020-06-03 |  250 |
| 2020-06-04 |  200 |
| 2020-06-05 |  180 |
| 2020-06-06 |  150 |
| 2020-06-07 |  650 |
| 2020-06-08 |  500 |
| 2020-06-09 |  150 |
+------------+------+

Bonus Läs:Hur man får poster från de senaste 24 timmarna

Hur man får rader mellan 2 datum i MySQL

Här är SQL-frågan för att få poster mellan 2 datum i MySQL. Det finns två sätt att få rader mellan två datum – med matematisk operator och med funktionen MELLAN. Vi kommer att titta på båda dessa metoder.

Bonusläsning:  Hur du får de senaste 15 dagarna i MySQL

Använda matematiska operatorer

Låt oss säga att du vill få poster där order_date är mellan 2 datum 2020-06-02 och 2020-06-06. Här är SQL för att få data mellan två datum med matematiska operatorer.

mysql> select * from sales
     where order_date>='2020-06-02'
     and order_date<='2020-06-06';
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-02 |  400 |
| 2020-06-03 |  250 |
| 2020-06-04 |  200 |
| 2020-06-05 |  180 |
| 2020-06-06 |  150 |
+------------+------+

I ovanstående fråga väljer vi poster där order_date är på eller efter 2020-06-02 och på eller före 2020-06-06. Du kan också använda andra matematiska operatorer som>,<,=och <> med datum. Du kan också denna SQL-fråga för att välja poster mellan 2 datum i PostgreSQL, SQL Server och Oracle.

Bonus Läs:Hur man får första posten i varje grupp i MySQL

Om du vill välja poster från ett specifikt datum till aktuellt datum kan du systemfunktioner som nuvarande_datum eller now() i din fråga.

mysql> select * from sales
     where order_date>'2020-06-02'
     and order_date<current_date;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-03 |  250 |
| 2020-06-04 |  200 |
| 2020-06-05 |  180 |
| 2020-06-06 |  150 |
| 2020-06-07 |  650 |
| 2020-06-08 |  500 |
+------------+------+

Använder operatorn BETWEEN

Du kan också välja data mellan 2 datum med operatorn BETWEEN

mysql> select * from sales
     where order_date
     BETWEEN '2020-06-02' and '2020-06-06';
+------------+------+
| order_date | sale |
+------------+------+
| 2020-06-02 |  400 |
| 2020-06-03 |  250 |
| 2020-06-04 |  200 |
| 2020-06-05 |  180 |
| 2020-06-06 |  150 |
+------------+------+

När du väljer poster kommer BETWEEN-operatören att inkludera poster mellan de två datumen du nämner, såväl som posterna för de två datumen.

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Hur man begränsar åtkomst till databasen i PostgreSQL

  2. Jämföra lastbalanserare för PostgreSQL

  3. beräkna löpande saldo i Oracle-fråga

  4. Anslut med tidigare motsvarighet för MySQL