如果日期存储为文本,MYSQL可以按日期过滤吗?前“02/10/1984”

时间:2010-04-01 19:19:27

标签: database mysql

我正在尝试为已拥有超过1000个项目的数据库的客户端修改应用程序。日期以文本形式存储在数据库中,格式为“02/10/1984”。系统允许您动态地向目录添加和删除字段,并且还允许高级搜索允许特定字段。

问题在于它的设计并未考虑日期,因此当我将字段设置为日期,并尝试按范围搜索时,查询尝试执行AND(cfv0.value> = 01 / 02/2004 AND cfv0.value< = 05/03/2008)。我可以这样做,所以传递的日期范围是一个数字时间值。是否有一种方法,当发送查询时,它采取文本字段(与日期)并将其转换为数字时间值,所以在这一点上我基本上只是比较数字,这将工作正常。

由于动态字段的设置方式,我无法将所有当前日期更改为数值。

谢谢你们!

2 个答案:

答案 0 :(得分:4)

你想要转换进入的查询和列中的日期,所以像这样(假设它是按月/日/年顺序):

AND STR_TO_DATE(cfv0.value, '%m/%d/%Y') >= STR_TO_DATE('01/02/2004', '%m/%d/%Y')

答案 1 :(得分:1)

请注意,将来,如果您希望将存储为字符串的日期按字母顺序和按时间顺序排序,则将它们存储为零填充,四位数的年,月,日格式,如下所示:

2004/01/20
2004/10/05
2006/12/31