Php Mysql选择记录从现在到未来7天
您好,我正在wordpress中创建一个函数,我需要在现在和未来7天内获取记录。我尝试了一些查询,但没有得到结果Php Mysql选择记录从现在到未来7天,php,mysql,sql,wordpress,datetime,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
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)
我想不出来,提前谢谢。代替
datewp_postmeta.meta_值使用STR_到datewp_postmeta.meta_值,'%Y-%m-%d'
您也可以这样使用,您必须在时间内CONCAT:00将varchar转换为datetime
现场演示
这是因为您将2018-03-26 12:00 AM存储为字符串,而不是将该列设置为DATETIME类型,如果这是您的实际存储值。@FunkFortyNiner实际上是由插件存储的值,我无法控制它,是否有任何方法可以转换查询中的格式?谢谢您需要对其进行格式化-它可以工作,STR_TO_DATEwp_postmeta.meta_值,'%Y-%m-%d',从现在到日期添加,间隔9天,谢谢。欢迎@Ryvan您可以检查另一个方法,因为我只需要日期,所以我可以完全忽略时间,所以第一个解决方案更好,但是query.tanx很好
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);