我的数据库中有一个字符串列
Wed Aug 13 17:51:06 GMT+05:30 2014
我可以将它转换为日期并在where子句中使用它来获取记录
where
Timecolumn >( CURDATE()-7)
请注意,时区说明符GMT+05:30
位于时间字符串和四位数年份字符串之间。
我在phpmyadmin中运行此查询,但我没有得到任何结果,是的,它们确实存在
SELECT * FROM `calldetails` WHERE STR_TO_DATE('date', '%a %b %d %H:%i:%s %x %Y')>(CURDATE()-7)
此处的日期是我的专栏名称
答案 0 :(得分:2)
使用substr()
删除时区数据
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 |
应用于您的查询:
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)