2010-05-08 4 views
2

Можно ли извлечь целое число из названий дней, то есть «Mon», Втр»,„ср“с помощью оператора SQLExtract номер дня от дня строки

Например:

Mon = 1 
Tue = 2 
Wed = 3 
+3

ли вам нужно только, чтобы работать на английском языке? –

ответ

4

Если вы просто иметь не DATETIME поле с только пн, вт, ср, и т.д., вы можете использовать STR_TO_DATE() и WEEKDAY() функции, чтобы придумать что-то вроде этого:

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

Test Корпус:

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

Если поле является дата, просто используйте

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

Дополнительная информация о MySQLs DATE_FORMAT можно optained here ,