我需要在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)
答案 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语句中使用日期
没有。这种方法做错了:
dob
上可能使查询更有效的任何索引。更好的方法是:
SELECT *
FROM table
WHERE dob BETWEEN '1492-01-01' AND '1492-12-31'
您始终希望尽可能少地进行类型转换,并保持表数据不变,以便正确使用索引。