0
votes

Plage de date d'affichage sans table

est-il possible d'afficher la plage de dates dans MySQL Withouth Table? J'ai ce code mais cela manque.

SET @startDate = '2018-10-01';
SET @endDate = '2019-02-21';

select @startDate + INTERVAL seq.seq DAY AS sequential_day
  from (
    SELECT A.N + 5*(B.N + 5*(C.N + 5*(D.N + 5*(E.N + 5*(F.N))))) AS seq
      FROM (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS A
      JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS B
      JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS C
      JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS D
      JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS E
      JOIN (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS F
       ) AS seq
 where seq.seq <= @endDate


3 commentaires

Duplicaté possible de Comment obtenir Liste des dates entre deux dates dans MySQL Sélectionnez Query


@ T.LORE - J'ai ajouté un échantillon complet


N'oubliez pas que SQL n'est pas une panacée. Il y a des tâches pour lesquelles il est tout simplement inapproprié


3 Réponses :


1
votes

1 commentaires

C'est exact. Vous avez besoin pour filtrer réellement la requête



1
votes

Vous pouvez utiliser la séquence SEQUENCE FORT> Moteur comme THS:

MariaDB [test]> select seq FROM seq_1_to_4;
+-----+
| seq |
+-----+
|   1 |
|   2 |
|   3 |
|   4 |
+-----+
4 rows in set (0.042 sec)

MariaDB [test]> select CURDATE() + INTERVAL seq day  FROM seq_1_to_31;
+--------------------------------+
| DATE(NOW()) + INTERVAL seq day |
+--------------------------------+
| 2019-02-23                     |
| 2019-02-24                     |
| 2019-02-25                     |
| 2019-02-26                     |
| 2019-02-27                     |
| 2019-02-28                     |
| 2019-03-01                     |
| 2019-03-02                     |
| 2019-03-03                     |
| 2019-03-04                     |
| 2019-03-05                     |
| 2019-03-06                     |
| 2019-03-07                     |
| 2019-03-08                     |
| 2019-03-09                     |
| 2019-03-10                     |
| 2019-03-11                     |
| 2019-03-12                     |
...
...
| 2019-03-22                     |
| 2019-03-23                     |
| 2019-03-24                     |
| 2019-03-25                     |
+--------------------------------+
31 rows in set (0.019 sec)

MariaDB [test]> 


1 commentaires

Utilisez Curdate () au lieu de date (maintenant ()) .



0
votes

Utilisez entre pour la plage de valeurs. Comme lui-même dans votre requête, vous voulez des dates dans une certaine plage

Votre requête actuelle affiche tous les <= Certain_value Il n'est pas tombé dans cette plage spécifique que vous souhaitez que les dates soient dans. entre vous permet de donner une plage de valeurs.


0 commentaires