将longtext转换为datetime以在wordpress中使用(MySQL数据库)

时间:2016-06-12 11:11:24

标签: mysql sql wordpress datetime

我正在一个wordpress网站上工作,我需要开始某种日历工作,我会在侧边栏中显示即将举办的活动。为此,我在自定义帖子类型中添加了一个元字段(日期)。我想做的是通过sql(MySQL)获取即将发生的事件。

我知道您可以将日期时间与某些函数(例如CUR_DATE()和NOW())进行比较,但问题是,由于我的数据存储为元字段,它具有longtext类型而不是datetime类型,使我无法比较和选择我的数据与上述功能。我尝试使用CONVERT,但这会引发语法错误。关于如何解决这个问题的任何想法?

下面你可以找到抛出语法错误的sql。如果我在其中省略CONVERT语句,我会得到结果。我的日期格式为d-m-Y btw。

SELECT p.ID FROM tt_posts p
INNER JOIN tt_postmeta pm
ON p.ID = pm.post_id

WHERE 
    p.post_type = "activity" AND
    p.post_status = "publish" AND
    pm.meta_key = "date" AND
    CONVERT(DATETIME, pm.meta_value) >= NOW()

ORDER BY pm.meta_value ASC

1 个答案:

答案 0 :(得分:1)

你的longtext日期应该是一个unix时间戳,wordpress是一个php应用程序,所以只需:

$timestamp = 1465731381;
$dateObject = date('d.m.Y h:i:s', $timestamp);

这会给你一个格式为的日期对象:

12.06.2016 11:36:21

请参阅php manual - date了解更多格式选项。

Afaik mysql还具有将任何日期对象(如date.now())转换为unix时间戳的功能:UNIX_TIMESTAMP()

更多信息:mysql manual - date and time functions

我希望有所帮助。