你好,我在wordpress中创建一个函数,我需要在现在和未来7天之间获取记录。我尝试了很少的查询。但是无法得到结果。
SELECT * from wp_postmeta where wp_postmeta.meta_key = '__rp_order_date';
上面的查询返回
meta_id | post_id | meta_key | meta_value
--------+---------+-----------------+-------------------
7023 | 2979 | __rp_order_date | 2018-03-26 12:00 AM
但是当我按日期过滤时,它不会显示任何记录。
方法1
SELECT * from wp_postmeta where wp_postmeta.meta_key = '__rp_order_date' and date(wp_postmeta.meta_value) BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY);
方法2
SELECT * from wp_postmeta where wp_postmeta.meta_key = '__rp_order_date' and date(wp_postmeta.meta_value) <= DATE_ADD(CURDATE(), INTERVAL 7 DAY)
我的目的是执行此代码,该代码也不显示任何内容。
SELECT DISTINCT wp_woocommerce_order_items.order_id,wp_posts.post_status,wp_postmeta.meta_value as delivery_date from wp_woocommerce_order_items
INNER JOIN wp_posts on wp_posts.ID = wp_woocommerce_order_items.order_id
INNER JOIN wp_postmeta ON wp_postmeta.post_id = wp_woocommerce_order_items.order_id
where wp_posts.post_status='wc-processing' and wp_postmeta.meta_key = '__rp_order_date' and DATE(wp_postmeta.meta_value) <= DATE_ADD(CURDATE(), INTERVAL 7 DAY)
我提前感谢,我无法理解。
答案 0 :(得分:1)
代替
STR_TO_DATE(wp_postmeta.meta_value, '%Y-%m-%d')
使用:00
您也可以这样使用,您必须在{I} varchar
转换为datetime
SELECT *
FROM wp_postmeta
WHERE wp_postmeta.meta_key = '__rp_order_date'
AND STR_TO_DATE(CONCAT(SUBSTRING(wp_postmeta.meta_value,1,16),':00 ',SUBSTRING(wp_postmeta.meta_value,18,2)),'%Y-%m-%d %r')
BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY);
现场演示