我试图只抓取属于某个日期范围的记录。问题是时间戳和日期作为字符串存储在同一单元格中。我想只抓住日期在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
答案 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')