2010-05-08 23 views
2

Est-il possible d'extraire une valeur entière des noms de jour, soit « Mon », Mar », « mer » avec une instruction SQLnuméro de jour Extrait de chaîne de jour

Par exemple:

Mon = 1 
Tue = 2 
Wed = 3 
+3

-vous seulement besoin pour travailler pour la langue anglaise? –

Répondre

4

Si vous avez simplement un champ non-datetime avec seulement lun, mar, mer, etc, vous pouvez utiliser les fonctions STR_TO_DATE() et WEEKDAY() à venir avec quelque chose comme ceci:

SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', yourField), '%X%V %W')) + 1 AS WeekIndex; 

test Cas:

SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', 'Mon'), '%X%V %W')) + 1 AS WeekIndex; 
+-----------+ 
| WeekIndex | 
+-----------+ 
|   1 | 
+-----------+ 

SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', 'Tue'), '%X%V %W')) + 1 AS WeekIndex; 
+-----------+ 
| WeekIndex | 
+-----------+ 
|   2 | 
+-----------+ 

SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', 'Wed'), '%X%V %W')) + 1 AS WeekIndex; 
+-----------+ 
| WeekIndex | 
+-----------+ 
|   3 | 
+-----------+ 

SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', 'Thu'), '%X%V %W')) + 1 AS WeekIndex; 
+-----------+ 
| WeekIndex | 
+-----------+ 
|   4 | 
+-----------+ 
1

Si votre champ est un champ de date, il suffit d'utiliser

SELECT DATE_FORMAT(my.field, "%w"); 

Plus d'info sur MySQLs DATE_FORMAT peut être optained here .