0

私はオラクルデータベースで動作するはずの次のクエリを持っていますが、現在のワードプレスのインストールはmysqlデータベースを使用しています。mysqlで動作するように、次のクエリを書き直すのを手伝っていただけませんか。

$wpdb->get_results("SELECT a.ID, a.post_title, DAYOFMONTH(b.meta_value) as dom "
."FROM $wpdb->posts a, $wpdb->postmeta b "
."WHERE b.meta_value >= '{$thisyear}-{$thismonth}-01 00:00:00' "
."AND b.meta_value <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59' "
."AND a.post_type = 'post' AND a.post_status = 'publish' AND a.ID = b.postid AND   b.meta_key='Event Date'"
);
4

2 に答える 2

0

私が言えることから、MySQLでのクエリに問題はありません。次のステートメントはどちらも同じ結果を生成します(ただし、私はを使用することを好みますJOIN)。簡略化したバージョンは次のとおりです。

SELECT  *
FROM table1 t 
    JOIN table2 t2 on t.id = t2.id
WHERE t.dt >= '2011-01-02 00:00:00';

SELECT  *
FROM table1 t, table2 t2
WHERE t.dt >= '2011-01-02 00:00:00' 
   AND t.id = t2.id;

SQLフィドルデモ

于 2013-03-19T20:38:32.530 に答える
0

定数の日付形式に問題がある可能性があります。を使用して日付を同じ形式に変換することをお勧めしますto_char()。私は次のようなことを考えています:

SELECT a.ID, a.post_title, to_char(b.meta_value, 'DD') as dom "
."FROM $wpdb->posts a, $wpdb->postmeta b "
."WHERE to_char(b.meta_value, 'YYYY-MM-DD HH:MI:SS') >= '{$thisyear}-{$thismonth}-01 00:00:00' "
."AND to_char(b.meta_value, 'YYYY-MM-DD HH:MI:SS') <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59' "
."AND a.post_type = 'post' AND a.post_status = 'publish' AND a.ID = b.postid AND   b.meta_key='Event Date'

または、もっと簡単に:

SELECT a.ID, a.post_title, to_char(b.meta_value, 'DD') as dom "
."FROM $wpdb->posts a, $wpdb->postmeta b "
."WHERE to_char(b.meta_value, 'YYYY-MM') = '{$thisyear}-{$thismonth}' "
."AND a.post_type = 'post' AND a.post_status = 'publish' AND a.ID = b.postid AND   b.meta_key='Event Date'

meta-valueこれは、が日付として保存されていることを前提としています。そうでない場合は、値の日付への変換を処理する必要があります。あなたが関数を使用しているので、私はこの仮定をしていますDAYOFMONTH

于 2013-03-19T21:13:42.330 に答える