Mysql从现在到接下来的7天选择记录

时间:2018-03-25 13:16:58

标签: php mysql sql wordpress datetime

你好,我在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)

我提前感谢,我无法理解。

1 个答案:

答案 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);

现场演示

  

http://sqlfiddle.com/#!9/748788/9