草庐IT

Mysql string to date with given format containing a timezone specifier

coder 2023-10-12 原文

我的数据库中有一个字符串列作为

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)

此外,日期是我的专栏名称

最佳答案

使用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 |

SQLFiddle

应用于您的查询:

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)

关于Mysql string to date with given format containing a timezone specifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286335/

有关Mysql string to date with given format containing a timezone specifier的更多相关文章

随机推荐