有人可以查看此查询,我整天都在敲墙。
在我的数据库中,我发现了带有字段的事件" _start_date_picker"等于"
2018年4月30日"和" _end_date_picker"等于" 2018-05-03"
我试图获得" post_id"这个选择日期到这个区间
SELECT * FROM wp_postmeta
WHERE (wp_postmeta.meta_key='_start_date_picker' AND
UNIX_TIMESTAMP(STR_TO_DATE(wp_postmeta.meta_value, "%Y-%m-%d")) <=
UNIX_TIMESTAMP(STR_TO_DATE('2018-05-01', "%Y-%m-%d"))) AND
(wp_postmeta.meta_key='_end_date_picker'
AND UNIX_TIMESTAMP(STR_TO_DATE(wp_postmeta.meta_value, "%Y-%m-%d")) >=
UNIX_TIMESTAMP(STR_TO_DATE('2018-05-01', "%Y-%m-%d")))
什么都没有...
顺便说一句,有没有人知道如何在比较之前转换元值?woocommerce_product_query&#39;钩
$meta_query= array(
'relation' => 'OR',
array(
'key' => '_start_date_picker',
'value' => $_REQUEST['event_start_date'],
'compare' => '>=',
'type' => 'DATE'
),
array(
'key' => '_end_date_picker',
'value' => $_REQUEST['event_start_date'],
'compare' => '<=',
'type' => 'DATE'
)
);
我试图通过$ _REQUEST值中的此事件字段来过滤我的事件..有人可以帮忙......?
答案 0 :(得分:1)
从wordpress的内存中,表格中的2个日期分为2个不同的行。
因此,您需要一个将表连接到自身的查询,以获取匹配的行。
SELECT *
FROM wp_postmeta a
INNER JOIN wp_postmeta b
ON a.meta_key = '_start_date_picker'
AND b.meta_key = '_end_date_picker'
WHERE UNIX_TIMESTAMP(STR_TO_DATE(a.meta_value, "%Y-%m-%d")) <=
UNIX_TIMESTAMP(STR_TO_DATE('2018-05-01', "%Y-%m-%d")))
AND UNIX_TIMESTAMP(STR_TO_DATE(b.meta_value, "%Y-%m-%d")) >=
UNIX_TIMESTAMP(STR_TO_DATE('2018-05-01', "%Y-%m-%d")))
答案 1 :(得分:1)
我可以保证没有满足这两个条件的行:
meta_key='_start_date_picker'
AND meta_key='_end_date_picker'
想一想。如果其中一个条件的计算结果为TRUE,则另一个条件将评估为FALSE。
我们需要两个对wp_postmeta
表的引用。
FROM wp_postmeta sdp
JOIN wp_postmeta edp
ON edp.post_id = sdp.post_id
WHERE ( sdp.meta_key = '_start_date_picker' )
AND ( sdp.meta_value conditions )
AND ( edp.meta_key = '_end_date_picker' )
AND ( edp.meta_value conditions )