我正在尝试在mysql中运行一个查询来从表中选择" end_date"该记录大于或等于当前日期,但它不断提出" MySQL返回一个空结果集"。但是这样的记录肯定存在于我的表中,我的查询是否有问题?
这是一条记录" 03/24/2014"的end_date列中的值。
这是我的查询
SELECT * FROM ******** WHERE DATE(end_date) > DATE(CURDATE())
我怀疑它可能是日期格式,这意味着我的计算机上的日期格式可能是这样的:dd / MM / yyyy 而服务器上的日期格式可能如下:MM / dd / yyyy
不幸的是,如果是这样的话,我不知道该怎么做。
答案 0 :(得分:2)
如@FreshPrinceOfSO评论中所述,最好将日期存储为真实的DATE,TIMESTAMP或DATETIME。
如果这不是一个选项 - 例如,它不是你的数据库改变 - 那么Mysql你可以使用STR_TO_DATE()
函数:
SELECT * FROM ********
WHERE STR_TO_DATE(end_date,'%m/%d/%Y') > CURDATE();
...无论其 如果end_date列具有索引,则应用于它的函数将使索引权益无效。