Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 查找特定日期范围内的结果_Mysql_Sql_Date_Search - Fatal编程技术网

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

Mysql 查找特定日期范围内的结果,mysql,sql,date,search,Mysql,Sql,Date,Search,我试图只抓取某个日期范围内的记录。问题是时间戳和日期作为字符串存储在同一单元格中。我只想抓取日期介于2013-05-01和2013-05-03之间的行 日期(存储为字符串) mysql 试一试 @FreshPrinceOfSO绝对正确地指出,在这种情况下不会使用索引该字符串几乎是日期时间的有效语法。因此,另一种可能较慢的方法是用空格替换“T”,然后将其转换为datetime SELECT * FROM table1 WHERE CAST(REPLACE(`date`, 'T', ' ')

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

日期(存储为字符串)

mysql

试一试


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

该字符串几乎是
日期时间
的有效语法。因此,另一种可能较慢的方法是用空格替换“T”,然后将其转换为
datetime

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

步骤1)转换为
datetime
字段。步骤2)
从tbl中选择列列表,其中dateCol>='2013-05-01 00:00:00'和dateCol@FreshPrinceOfSO:
。。。其中日期(datecol)介于“2013-05-01”和“2013-05-03”之间course@MarcB我不会使用
date()
因为如果该列上有索引,它将不会被使用。@FreshPrinceOfSO请参阅sqlfiddle。可能需要指出的是,这里不会使用索引,他们确实需要使用
datetime
@FreshPrinceOfSO:这是因为“表”。我将其重命名为“table1”,您实际上缺少了
STR_to_DATE
的右括号,但现在已修复。请为您的答案提供一些解释。
SELECT * FROM table WHERE date BETWEEN 2013-05-01 AND 2013-05-03
SELECT * FROM table1 
WHERE STR_TO_DATE(SUBSTRING(`date`,1,10),'%d-%m-%Y') 
    BETWEEN '2013-05-01' AND '2013-05-03'
SELECT *
  FROM table1
WHERE STR_TO_DATE(`date`,'%Y-%m-%d') BETWEEN '2013-05-01' AND '2013-05-03'
SELECT * FROM table1 WHERE
  CAST(REPLACE(`date`, 'T', ' ') AS DATETIME) 
  BETWEEN '2013-05-01' AND '2013-05-03';
SELECT * FROM table 
WHERE date('yourdate') BETWEEN date('2013-05-01') AND date('2013-05-03')