Archives de catégorie : SQL

Les heures de la journée en MySQL

Petite application pratique de notre article Compter jusqu’à 100 avec MySQL, afficher les heures de la journée au format heure :

select Concat( Lpad((Unites.Nombre + (Dizaines.Nombre-1)*10 -1), 2, 0), ':00') as Heure
from ( 
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Unites
inner join (
Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
) As Dizaines on 1=1
where (Unites.Nombre + (Dizaines.Nombre-1)*10 -1) <= 23

Ce qui nous donne

+-------+
| Heure |
+-------+
| 00:00 |
| 01:00 |
| 02:00 |
| 03:00 |
| 04:00 |
| 05:00 |
| 06:00 |
| 07:00 |
| 08:00 |
| 09:00 |
| 10:00 |
| 11:00 |
| 12:00 |
| 13:00 |
| 14:00 |
| 15:00 |
| 16:00 |
| 17:00 |
| 18:00 |
| 19:00 |
| 20:00 |
| 21:00 |
| 22:00 |
| 23:00 |
+-------+

Et hop ! Il n’y a plus qu’à comparer avec les heures d’une autre table.

 

Compter jusqu’à 100 avec MySQL

Il est parfois utile de compter simplement pour ensuite faire une jointure sur cette liste.

Pour MySQL, il faut utiliser une méthode un peu brute et sans table temporaire.

select Unites.Nombre + (Dizaines.Nombre-1)*10 as Nombre
 from ( 
 Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
 ) As Unites
 inner join (
 Select 1 as Nombre Union All Select 2 Union All Select 3 Union All Select 4 Union All Select 5 Union All Select 6 Union All Select 7 Union All Select 8 Union All Select 9 Union All Select 10
 ) As Dizaines on 1=1