我正在尝试为已拥有超过1000个项目的数据库的客户端修改应用程序。日期以文本形式存储在数据库中,格式为“02/10/1984”。系统允许您动态地向目录添加和删除字段,并且还允许高级搜索允许特定字段。
问题在于它的设计并未考虑日期,因此当我将字段设置为日期,并尝试按范围搜索时,查询尝试执行AND(cfv0.value> = 01 / 02/2004 AND cfv0.value< = 05/03/2008)。我可以这样做,所以传递的日期范围是一个数字时间值。是否有一种方法,当发送查询时,它采取文本字段(与日期)并将其转换为数字时间值,所以在这一点上我基本上只是比较数字,这将工作正常。
由于动态字段的设置方式,我无法将所有当前日期更改为数值。
谢谢你们!
答案 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