【发布时间】:2014-06-28 03:11:25
【问题描述】:
这是RECORDS MySQL 表:
ID - BIGINT(20)
DATE - DATE
记录:
ID Date
1 2014-03-01
2 2014-03-02
3 2014-04-01
4 2014-04-02
这是第一个查询:
SELECT id, DATE_FORMAT(date,'%d/%m/%Y') AS date FROM records
WHERE
date >= STR_TO_DATE('01/04/2014','%d/%m/%Y') AND
date <= STR_TO_DATE('30/04/2014','%d/%m/%Y')
一切正常,我得到了结果:
3,2014-04-01
4,2014-04-02
但是,当我尝试使用这样的子查询获取日期范围时:
SELECT *
FROM (SELECT id, DATE_FORMAT(date,'%d/%m/%Y') AS date
FROM records) AS TEST
WHERE
date >= STR_TO_DATE('01/04/2014','%d/%m/%Y') AND
date <= STR_TO_DATE('30/04/2014','%d/%m/%Y')
我得到一个空结果集(即零行)。
我的错误在哪里?
【问题讨论】:
-
因为您的子查询和别名是外部查询中的日期字符串而不是日期。
-
子查询中的“date”尝试“TEST.date”
-
我试过:SELECT * FROM (SELECT id, DATE_FORMAT(date,'%d/%m/%Y') AS date FROM records) AS TEST WHERE TEST.date >= STR_TO_DATE(' 01/04/2014','%d/%m/%Y') AND TEST.date
-
@user3623185 在你的情况下,我会避免子查询。
-
@user3623185 尝试选择日期而不是选择 *
标签: php mysql date date-format str-to-date