MySQL հարցումը երկու օրվա միջև հաջորդ ամենամոտ օրը ստանալու համար:
Հետևյալը շարահյուսությունն է.
select * from yourTableName
order by ( yourColumnName> now()) desc, (case when yourColumnName > now() then yourColumnName end) ,
yourColumnName desc
limit 1;
Եկեք նախ ստեղծենք աղյուսակ.
mysql> create table DemoTable1454
-> (
-> ShippingDate date
-> );
Query OK, 0 rows affected (0.59 sec)
Տեղադրեք որոշ գրառումներ աղյուսակում՝ օգտագործելով insert հրամանը.
mysql> insert into DemoTable1454 values('2019-10-01');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1454 values('2019-10-03');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1454 values('2019-10-05');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable1454 values('2019-10-04');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1454 values('2018-10-06');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1454 values('2019-10-06');
Query OK, 1 row affected (0.11 sec)
Ցուցադրել բոլոր գրառումները աղյուսակից՝ օգտագործելով select հայտարարությունը.
mysql> select * from DemoTable1454;
Սա կստեղծի հետևյալ արդյունքը.
+--------------+
| ShippingDate |
+--------------+
| 2019-10-01 |
| 2019-10-03 |
| 2019-10-05 |
| 2019-10-04 |
| 2018-10-06 |
| 2019-10-06 |
+--------------+
6 rows in set (0.00 sec)
Ընթացիկ ամսաթիվը հետևյալն է.
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2019-10-04 21:30:01 |
+---------------------+
1 row in set (0.00 sec)
Ահա երկու օրվա միջև հաջորդ ամենամոտ օրը ստանալու հարցումը.
mysql> select * from DemoTable1454
-> order by ( ShippingDate > now()) desc,
-> (case when ShippingDate > now() then ShippingDate end) ,
-> ShippingDate desc
-> limit 1;
Սա կստեղծի հետևյալ արդյունքը.
+--------------+
| ShippingDate |
+--------------+
| 2019-10-05 |
+--------------+
1 row in set (0.00 sec)