我正在使用 MySQL 数据库,其中日期存储为 varchar,如下所示:
'2013-01-31'
在列cl_223
我只需要选择 2013 年的记录,所以我尝试了:
SELECT ..
FROM ....
Where cl_223 Like '2013'
但这似乎不起作用。
感谢大家的帮助!
您必须添加%
为通配符:
SELECT ..
FROM ....
WHERE cl_223 LIKE '2013%'
在 varchar 列中存储 datettime 值会使日期时间操作的某些功能复杂化。但是当然你可以选择你的值写这样一个查询如下
SELECT * FROM table_name WHERE cl_223 LIKE '2013%'
但是,如果您没有任何性能问题,您可以将 varchar 列转换为 datetime 值并编写更强的类型化查询,如下所示:
SELECT * FROM table_name WHERE STR_TO_DATE(cl_223,'%Y-%m-%d2') BETWEEN '2013-01-01' AND '2013-12-31'
但是,如果您在流程中需要日期时间值作为日期时间,则最好将其存储在 datetime 列而不是 varchar 列中。
查询应该是
SELECT ..
FROM ....
Where cl_223 Like '2013%'
但是,更好的解决方案是将日期存储为DATE
数据类型。如果该列中的日期始终以它们现在的格式使用,则更改将向后兼容。它还将允许更轻松地处理日期值。