0

我正在使用 MySQL 数据库,其中日期存储为 varchar,如下所示:

'2013-01-31'在列cl_223

我只需要选择 2013 年的记录,所以我尝试了:

SELECT ..
FROM ....

Where cl_223 Like '2013'   

但这似乎不起作用。

感谢大家的帮助!

4

3 回答 3

3

您必须添加%为通配符:

SELECT ..
FROM ....

WHERE cl_223 LIKE '2013%'   
于 2013-01-14T17:06:47.147 回答
2

在 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 列中。

于 2013-01-14T17:14:11.657 回答
1

查询应该是

SELECT ..
FROM ....

Where cl_223 Like '2013%'

但是,更好的解决方案是将日期存储为DATE数据类型。如果该列中的日期始终以它们现在的格式使用,则更改将向后兼容。它还将允许更轻松地处理日期值。

于 2013-01-14T17:08:19.220 回答