【发布时间】:2011-02-17 02:34:24
【问题描述】:
是否可以使用 SQL 语句从日期名称中提取整数值,例如“Mon”、“Tue”、“Wed”?
例如:
Mon = 1
Tue = 2
Wed = 3
【问题讨论】:
-
你只需要它为英语工作吗?
是否可以使用 SQL 语句从日期名称中提取整数值,例如“Mon”、“Tue”、“Wed”?
例如:
Mon = 1
Tue = 2
Wed = 3
【问题讨论】:
【讨论】:
【讨论】:
试试FIELD:
SELECT FIELD('Mon', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
-> 1
SELECT FIELD('Thu', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
-> 4
http://dev.mysql.com/doc/refman/5.4/en/string-functions.html#function_field
【讨论】:
如果您只是有一个只有星期一、星期二、星期三等的非日期时间字段,您可以使用 STR_TO_DATE() 和 WEEKDAY() 函数来生成类似这样的内容:
SELECT WEEKDAY(STR_TO_DATE(CONCAT('201011 ', yourField), '%X%V %W')) + 1 AS WeekIndex;
测试用例:
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 |
+-----------+
【讨论】: