2017-06-07 1 views
0

J'ai une table:mysql basée sur semaine

id 0_open 0_close 1_open 1_close 2_open 2_close 3_open 3_close 4_open 4_close 5_open 5_close 6_open 6_close 

1 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 07:00 18:00 
  • 0-6 - jour de la semaine (du lundi au dimanche);

Comment puis-je sélectionner des lignes:

SELECT * FROM table WHERE TIME(NOW()) BETWEEN 2_open AND 2_close 

Si aujourd'hui mercredi (Indice 2)?

Répondre

0

Votre structure SQL est extrêmement désactivée.

Habituellement, on va créer une table comme ceci:

id, open, close, weekday 

et vous seriez en mesure de l'interroger comme celui-ci

SELECT open, close WHERE weekday = DAYOFWEEK() 

Je suppose que vous ne pouvez pas le changer, donc vous êtes coincé avec votre table actuelle. Vous pouvez interroger vos informations comme ceci:

SELECT 0_open, 0_close FROM table WHEN DAYOFWEEK() = 0 
UNION 
SELECT 1_open, 1_close FROM table WHEN DAYOFWEEK() = 1 
UNION 
SELECT 2_open, 2_close FROM table WHEN DAYOFWEEK() = 2 
UNION 
SELECT 3_open, 3_close FROM table WHEN DAYOFWEEK() = 3 
UNION 
SELECT 4_open, 4_close FROM table WHEN DAYOFWEEK() = 4 
UNION 
SELECT 5_open, 5_close FROM table WHEN DAYOFWEEK() = 5 
UNION 
SELECT 6_open, 6_close FROM table WHEN DAYOFWEEK() = 6 
0

Il est quelque chose que vous avez à gérer dans la couche métier de l'application (par exemple peut-être une fonction dans la couche middleware/back-end qui prend une date comme argument et renvoie les noms de colonnes). En parlant des fonctions, vous pouvez également écrire un function dans MySQL qui prend une date et retourne deux valeurs qui peuvent être utilisées dans la requête ci-dessus. Par exemple:Vous pouvez utiliser la fonction de bibliothèque DAYOFWEEK() de MySQL pour déterminer les noms de colonnes.