我正在一个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
答案 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
我希望有所帮助。