unix\u时间戳mysql,无法获得正确的查询

h6my8fg2  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(301)

有人能看看这个问题吗,我整天都在翻墙。在我的数据库中,有一个事件字段“\u start\u date\u picker”等于
“2018-04-30”和“\u end\u date\u picker”等于“2018-05-03”
我正试图通过选择这个时间间隔来获得这个的“post\u 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\u product\u query”钩子中比较之前如何转换元值吗

$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'
        )
    );

我正在尝试从$\u请求值中按此事件字段筛选我的事件..有人能帮忙吗。。。?

t30tvxxf

t30tvxxf1#

从wordpress的内存中,表中的两个日期在两个不同的行上。
因此,需要一个查询将表与自身连接起来,以获得匹配的行。

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")))
gcxthw6b

gcxthw6b2#

我可以保证没有行同时满足这两个条件:

meta_key='_start_date_picker' 
  AND meta_key='_end_date_picker'

好好想想。如果其中一个条件的计算结果为true,那么另一个条件的计算结果将为false。
我们需要两个参考资料 wp_postmeta table。

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 )

相关问题