查找特定日期范围内的结果

时间:2013-05-07 17:19:30

标签: mysql sql date search

我试图只抓取属于某个日期范围的记录。问题是时间戳和日期作为字符串存储在同一单元格中。我想只抓住日期在2013-05-01和2013-05-03之间的行。

日期(存储为字符串)

2013-05-01T23:19:44
2013-05-02T23:19:40
2013-05-06T23:19:46
2013-05-06T23:15:17

MySQL的

SELECT * FROM table WHERE date BETWEEN 2013-05-01 AND 2013-05-03

4 个答案:

答案 0 :(得分:10)

尝试

SELECT *
  FROM table1
WHERE STR_TO_DATE(`date`,'%Y-%m-%d') BETWEEN '2013-05-01' AND '2013-05-03'

<强> SQLFiddle

正如@FreshPrinceOfSO绝对正确地指出在这种情况下不会使用索引

答案 1 :(得分:1)

SELECT * FROM table1 
WHERE STR_TO_DATE(SUBSTRING(`date`,1,10),'%d-%m-%Y') 
    BETWEEN '2013-05-01' AND '2013-05-03'

答案 2 :(得分:0)

该字符串几乎是datetime的有效语法。因此,另一种方法,如果可能更慢的方法是用空格替换'T',然后将其转换为datetime

SELECT * FROM table1 WHERE
  CAST(REPLACE(`date`, 'T', ' ') AS DATETIME) 
  BETWEEN '2013-05-01' AND '2013-05-03';

答案 3 :(得分:-1)

SELECT * FROM table 
WHERE date('yourdate') BETWEEN date('2013-05-01') AND date('2013-05-03')