过滤在mysql中存储为varchar的日期

时间:2013-01-14 17:04:43

标签: mysql date varchar

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

专栏'2013-01-31'

中的

cl_223

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

SELECT ..
FROM ....

Where cl_223 Like '2013'   

但这似乎不起作用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您必须将%添加为通配符:

SELECT ..
FROM ....

WHERE cl_223 LIKE '2013%'   

答案 1 :(得分:2)

将日期时间值存储在varchar列中会使日期时间操作的某些功能变得复杂。但是,您当然可以选择编写如下查询的值

SELECT * FROM table_name WHERE cl_223 LIKE '2013%'

但是,如果您没有任何性能问题,可以将varchar列转换为日期时间值并编写更强大的类型查询,如下所示:

  SELECT * FROM table_name WHERE  STR_TO_DATE(cl_223,'%Y-%m-%d2') BETWEEN '2013-01-01' AND '2013-12-31'

但是如果您需要将日期时间值作为流程中的日期时间,则最好将其存储在日期时间列而不是varchar列中。

答案 2 :(得分:1)

查询应为

SELECT ..
FROM ....

Where cl_223 Like '2013%'

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