【问题标题】:How do I convert from a date to string in mySQL?如何在 mySQL 中将日期转换为字符串?
【发布时间】:2014-10-08 18:08:15
【问题描述】:

我需要将 mySQL 中的 date 字段视为 string。为了在 LIKE 语句中使用日期:

select * from table where dob like some_string;

目前这样做会产生以下警告:

mysql> show warnings;
+---------+------+--------------------------------------------------------+
| Level   | Code | Message                                                |
+---------+------+--------------------------------------------------------+
| Warning | 1292 | Incorrect date value: '1492' for column 'dob' at row 1 |
+---------+------+--------------------------------------------------------+
1 row in set (0.00 sec)

【问题讨论】:

    标签: mysql string date


    【解决方案1】:

    使用演员表

    Select * 
    From   Table 
    Where  Cast(dob as nvarchar(20)) Like some_string;
    

    【讨论】:

      【解决方案2】:

      我会使用 DATE_FORMAT 来获取 DATE 列的字符串表示形式:

      SELECT 
          *
      FROM
          yourtable
      WHERE
          DATE_FORMAT(dob, '%Y-%m-%d') LIKE '1492%';
      

      并使用最适合您需要的模式。您可以在链接的手册页中找到说明符。

      注意:

      MySQL 不能对这种查询使用索引,所以会很慢。

      【讨论】:

        【解决方案3】:

        在 LIKE 语句中使用日期

        没有。这种方法做错的事情:

        • 将日期转换为字符串会浪费 CPU 时间。
        • 在可以进行整数比较时浪费时间进行字符串比较。
        • 丢弃dob 上可能提高查询效率的任何索引。

        更好的方法是:

        SELECT *
        FROM table
        WHERE dob BETWEEN '1492-01-01' AND '1492-12-31'
        

        您总是希望尽可能少地进行类型转换并保持表数据不变,以便正确利用索引。

        【讨论】:

          猜你喜欢
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多