2016-06-12 4 views
0

私はワードプレスのウェブサイトで作業しています。予定されているカレンダーを取得して、サイドバーに表示する予定のイベントを取得する必要があります。これを行うために、カスタム投稿タイプにメタフィールド(日付)を追加しました。私がやりたいことは、SQL(MySQL)を介して予定されているイベントを取得することです。wordpress(MySQLデータベース)で使用するためにlongtextをdatetimeに変換する

私はあなたが特定の機能(CUR_DATE()やNOW()など)とデータを比較できることは知っていますが、データがメタフィールドとして保存されているため、datetimeではなくlongtext上記の機能と比較して自分のデータを選択することは不可能です。私はCONVERTを使ってみましたが、これは構文エラーをスローします。どのように私はこれを解決することができますか?

以下は、構文エラーを投げているSQLを見つけることができます。私がCONVERTを含むステートメントを除外すると、結果が得られます。私の日付はd-m-Y btwと書式設定されています。

SELECT p.ID FROM tt_posts p 
INNER JOIN tt_postmeta pm 
ON p.ID = pm.post_id 

WHERE 
    p.post_type = "activity" AND 
    p.post_status = "publish" AND 
    pm.meta_key = "date" AND 
    CONVERT(DATETIME, pm.meta_value) >= NOW() 

ORDER BY pm.meta_value ASC 
+0

としてCONVERT(、DATETIME)を使用してみてください。次に、新しいフィールドを使用してNOW()で使用します。 –

+0

私はこれを試みたが、それは私のために働かなかった。私は私のJOINと私のWHEREステートメントの間に変換を配置しました:) –

答えて

1

あなたLONGTEXT日はUnixタイムスタンプやワードプレスでなければなりませんので、ちょうど行い、PHPアプリケーションです:

$timestamp = 1465731381; 
$dateObject = date('d.m.Y h:i:s', $timestamp); 

これはあなたのようにフォーマットされた日付オブジェクト与える:

12.06.2016 11:36:21 

をその他の書式設定オプションについては、php manual - dateを参照してください。

私の知る限りmysqlのは、UNIXタイムスタンプに任意の日付オブジェクトを変換する機能(date.now()等)を持っている:UNIX_TIMESTAMP()

詳細:mysql manual - date and time functions

私はそれが役に立てば幸い。

+0

これは私が避けようとしていたものです。私は先に行って、私のデータを別に保存し、 '変換'を残して、それはうまく動作します。私はNOW()と比較するために現在の書式設定を使用できる解決策があるかどうかを知りたいので、今質問を開いておきます。私はあなたの答えを受け入れるだろう他の誰も答えている場合:) –

関連する問題