2016-04-22 10 views
0

*予定されていないタスクを選択しようとしています。つまり、正確な日付であると時刻のものは、日付と時間の列が別であることを考慮して選択する必要があります。現在、私はそれが今日のすべてのインスタンスを選択しませんところ、これを使用していますSQL:DATETIME()なしのNOW()より後の予定日時および予定時刻

は:

SELECT * FROM `tasks` WHERE `due_date` >= NOW() AND `due_time` >= NOW() 

私はDATETIMEフィールドのためのデータベースを交互にはアクセスできません。私は選択することしかできません。

DUE_DATE

+1

理由だけではなく、 'datetime'列として期日を保存し、すべてのこの大騒ぎを保存していませんか? – Mureinik

+0

これらの2つのフィールドのデータタイプは何ですか? –

+0

"due_date"と "due_time"の列の*データ型*は...ですか? (これは質問ですか、ステータスレポートですか?) – spencer7593

答えて

0

:分をあなたはこのような何かを行うことができます:

SELECT t.* FROM `tasks` t 
    WHERE t.`due_date` >= DATE(NOW()) 
    AND ( (t.`due_date` = DATE(NOW()) AND t.`due_time` >= TIME(NOW())) 
     OR (t.`due_date` > DATE(NOW())) 
     ) 

最初のカットはDUE_DATEする比較、後で今日または起因しているすべてのタスクです。それにはあまりにも多くのものが含まれているため、今日は当然ではあるが、現在の時間前の作業を取り除く必要があります。

"よりシンプルな"ように見える他のクエリ方法があります。上記の方法では、述語を裸の列に保持するので、MySQLは適切なインデックスで範囲スキャン操作を効果的に使用できます。

フォロー

私がキーに複数の列とページングのために、前にこのタイプの問合せを行ってきました。何かが元のクエリについて私を悩ませていた、それは本当に必要以上の条件があった。 (何due_time上> =条件だった私を投げた。)

私はこれが等価であると信じて:

SELECT t.* FROM `tasks` t 
    WHERE t.`due_date` >= DATE(NOW()) 
    AND (t.`due_date` > DATE(NOW()) OR t.`due_time` >= TIME(NOW())) 
+0

ビンゴ!ありがとうございました。最初と最後の時間ですべてを並べ替えることはできますか? – jQuerybeast

+0

もソートが見つかりました。ありがとう – jQuerybeast

+1

はい、 'ORDER BY due_date ASC、due_time ASC'はうまくいくはずです。 – spencer7593

0

ではなくCURDATE()CURTIME()を使用してみてくださいタイプなど種類としてDATEdue_timeありTIMEを持っています。あなたは自由にそれらを持っているロジックを解決することができるはずです。ここ

詳細:http://www.w3schools.com/sql/func_now.asp

コメントごとに、それはあなたが日時と比較するために欲しいものの日時バージョンを維持するために、通常は理想的だけど。それでは、ただ一つの比較を行い、今のようにNOW()を使うことができます。

+0

を参照してください。CURDATE()とCURTIME()も試しました。私は同じ結果を得る。 – jQuerybeast

+0

データベースにアクセスする権限がありません(更新された質問に記載されている通りです)、SELECTだけが私の選択です – jQuerybeast

+0

あなたの場合、私は理解していますが、多くの人がこの質問/あなたがやっていることをやり遂げる方法は彼らにアクセスします。あなたの質問に直接関係しないかもしれないが、言及する価値がある。 – Dave

1
SELECT * FROM `tasks` WHERE `due_date` >= DATE(NOW()) AND `due_time` >= TIME(NOW()); 

DATE())(時間年 - 月 - 日付の部分を抽出し、TIME:あなたが探しているようにそれはそう行動を取得するには一部秒

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

+1

デイブの答えはきれいです、彼を使用してください。 –

+0

これはどちらもうまくいかないようです。それは今日と今日からのものを選択します。 – jQuerybeast

+0

それは> =、試し> –

関連する問題