如何在mySQL中将日期转换为字符串?

时间:2014-08-14 23:20:00

标签: mysql string date

我需要在mySQL中处理日期字段,就好像它是字符串一样。出于在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)

3 个答案:

答案 0 :(得分:2)

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

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

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

注意:

MySQL无法使用索引进行此类查询,因此速度很慢。

答案 1 :(得分:1)

使用演员

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

答案 2 :(得分:1)

  

在LIKE语句中使用日期

没有。这种方法做错了:

  • 浪费CPU时间将日期转换为字符串。
  • 在进行整数比较时,浪费时间进行字符串比较。
  • 抛弃dob上可能使查询更有效的任何索引。

更好的方法是:

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

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