【问题标题】:Extract day number from day string从日期字符串中提取日期数
【发布时间】:2011-02-17 02:34:24
【问题描述】:

是否可以使用 SQL 语句从日期名称中提取整数值,例如“Mon”、“Tue”、“Wed”?

例如:

 Mon = 1
 Tue = 2
 Wed = 3

【问题讨论】:

  • 你只需要它为英语工作吗?

标签: mysql converter weekday


【解决方案1】:
【解决方案2】:

如果您的字段是日期字段,只需使用

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

有关 MySQL 的更多信息 DATE_FORMAT 可以选择here

【讨论】:

    【解决方案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

    【讨论】:

      【解决方案4】:

      如果您只是有一个只有星期一、星期二、星期三等的非日期时间字段,您可以使用 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 |
      +-----------+
      

      【讨论】:

        猜你喜欢
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多