![](/img/trans.png)
[英]select date where year and month between certain period with Query builder Yii
[英]Select MySQL rows where a certain month is between two date fields
我有一個頁面,按月顯示事件。 每個事件都有一個start_date和finish_date作為yymmdd。 如果某個事件跨越兩個不同的月份,則應在每個月份顯示一次。 例如,如果我有一個開始日期為2014年3月19日,結束日期為2014年6月19日的事件,則該事件應顯示在3月,4月,5月和6月。
我一直在嘗試使用meta_query在wordpress中執行此操作,但我認為這是不可能的:
// Get chosen month to display from URL
$events_month = sanitize_text_field($_GET["month"]);
$events_year = sanitize_text_field($_GET["year"]);
// Convert chosen month to display to a timestamp
$ts = strtotime("$events_month $events_year");
// Create chosen month start end end dates to use for query
$month_start_date = date('Ym01', $ts);
$month_end_date = date('Ymt', $ts);
$args = array(
'post_type' => 'events',
'posts_per_page' => 50,
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_key' => 'start_date',
'meta_query' => array(
array(
'key' => 'start_date',
'value' => array($month_start_date, $month_end_date),
'type' => 'numeric',
'compare' => 'BETWEEN'
)
)
);
$events = new WP_Query($args);
因此,我正在尋找一種純MySQL解決方案。 有什么幫助嗎?
關於WP meta queries
,我無法告訴您太多信息,但是SQL中的WHERE
子句應涵蓋事件持續時間的所有四種類型:
發生的事件
查詢:
SELECT ... FROM ... WHERE
start_date BETWEEN month_start AND month_end
OR end_date BETWEEN month_start AND month_end
OR month_start BETWEEN start_date AND end_date
查詢;
SELECT ... FROM ... WHERE WHERE start_date <= month_end AND end_date >= month_start
在不了解元查詢內容的情況下(我的參考是this ),您想要的應該像這樣工作:
'meta_query' => array( 'relation' => 'AND', // default is AND array( 'key' => 'start_date', 'value' => $month_end_date, 'type' => 'numeric', 'compare' => '<=' ), array( 'key' => 'end_date', 'value' => $month_start_date, 'type' => 'numeric', 'compare' => '>=' ) ),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.