Use substr()
删除时区数据。
Also CURDATE() - 7
应该SUBDATE(CURDATE(), 7
select
concat(substr(str, 1, 19),substr(str, 30)) as str_sans_tz,
str_to_date(concat(substr(str, 1, 19),substr(str, 30)),
'%a %b %e %H:%i:%s %Y') date
from mytable
输出(解析前和解析后):
| STR_SANS_TZ | DATE |
|--------------------------|-------------------------------|
| Wed Aug 13 17:51:06 2014 | August, 13 2014 17:51:06+0000 |
SQL小提琴 http://sqlfiddle.com/#!2/f5aab6/5
适用于您的查询:
SELECT * FROM `calldetails`
WHERE str_to_date(concat(substr(`date`, 1, 19), substr(`date`, 30)), '%a %b %e %H:%i:%s %Y') > SUBDATE(CURDATE(), 7)