当日期格式化为dd / mm / YYYY时,选择日期范围

时间:2017-02-14 15:24:54

标签: mysql sql

我的数据库中的日期存储为dd / mm / YYYY

如何构建一个简单的mySQL查询来拉取某个范围内的日期:

e.g。

SELECT * FROM metric WHERE date BETWEEN '31/01/2016' AND '01/02/2017'

2 个答案:

答案 0 :(得分:3)

您可以使用str_to_date但请记住,现在服务器无法在日期列上使用索引(如果有)。

select *
from metric
where str_to_date(date,'%d/%m/%Y') between '2016-01-31'
        and '2017-02-01'

最好将日期存储为日期,或者如果字符串则以标准格式yyyy-mm-dd存储。

答案 1 :(得分:1)

您应该执行以下操作:

  1. 将包含日期字符串的所有列更新为日期列

    UPDATE metric SET `dateColumn` = str_to_date(`dateColumn`,'%d/%m/%Y');
    
  2. 更改表格

    ALTER TABLE metric MODIFY `dateColumn` DATE;
    
  3. 修改代码以将有效日期插入mysql

  4. 为您的任务使用内置的mysql日期函数

    SELECT * FROM metric WHERE date BETWEEN '2016-01-31' AND '2017-02-01'