我正在使用MySQL数据库,其中日期存储为varchar,如下所示:
专栏'2013-01-31'
中的 cl_223
我只需要选择2013年的记录,所以我尝试了:
SELECT ..
FROM ....
Where cl_223 Like '2013'
但这似乎不起作用。
感谢您的帮助!
答案 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
数据类型。如果该列中的日期始终以他们现在所使用的格式使用,则更改将向后兼容。它还可以更容易地处理日期值。