2017-01-28 20 views
0

私はここで簡単に何か(うまくいけば)と苦労しています。私は毎日レビューするオンラインログブックを持っています。毎日私は見直さなければならないいくつかのログケースを持っているので、私は、メインページの毎日のログケースを表示する簡単な日付フィルタを構築しました。SQL - 日付範囲内のレコードを取得します。同じ日のレコード

メインページを初めて読み込むとき(デフォルトのフィルタ条件を意味する)、ファイルに最新のDAYのすべてのログを表示するようにします。たとえば、今日が10日で、最新のケースが8日に提出された場合、8番目からすべてのケースを照会したいと考えています。

一方、誰かがすでに10日目にログファイルを提出している場合は、10日以降のすべてのレコードを表示したいとします。

ここでの問題は、最後のレコードがカットオフTIMEが真夜中または00:01のように見える場合にクエリが正確に日付を識別することです。つまり、その日に送信されたログファイルを表示しません真夜中過ぎ!したがって、今日のケースを見たい場合は、00:00〜00:01の間に提出されたものだけが表示され、フィルタ全体が役に立たなくなります。

クエリ

$sql = "SELECT * 
FROM qci_dmlog_data 
WHERE Incident_Date IN (
    SELECT MAX(Incident_Date) 
    FROM qci_dmlog_data 
    WHERE Holidex = '".$_SESSION['Holidex']."' 
) 
GROUP BY LogID ORDER BY Date DESC"; 

がそれをまとめるために、どのように私は彼らが提出されていたものTIMEを気にすることなく、最新DAYのレコードをフィルタすることができますか?

ありがとうございます!

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

あなたの日付フィールドのタイプがなければ、これは分かりません。 – TheConstructor

答えて

2

最新の日付からすべてのレコードを取得するには、発生日の日付部分を探してください。

SELECT * 
FROM qci_dmlog_data 
WHERE DATE(Incident_Date) IN (
    SELECT MAX(DATE(Incident_Date)) 
    FROM qci_dmlog_data 
    WHERE Holidex = '".$_SESSION['Holidex']."' 
) 
+0

は魅力的な作品です。ありがとうございます。 – Armitage2k

0

私はあなただけの「日付」のdate部分を使用することに加えてHolidexにサブクエリを相関する必要があると考えている:これは、「最新の日付が」Holidexあたりにあることを前提としてい

SELECT d.* 
FROM qci_dmlog_data d 
WHERE d.Holidex = '".$_SESSION['Holidex']."' AND 
     DATE(d.Incident_Date) = (SELECT MAX(DATE(d2.Incident_Date)) 
           FROM qci_dmlog_data d2 
           WHERE d2.Holidex = d.Holidex 
          ); 

+0

ありがとう、これも同様に動作しますが、 'Holidex'は私がここでやっている' date'オペレーションとは関係ありません。 Holidexは、ユーザーの投稿を区別するために使用する固有のユーザー識別子です。それでも、ありがとう! – Armitage2k

+0

@ Armitage2k。 。 。その場合、VKPのソリューションは適切なソリューションです。この質問から、データの最新の日付でない場合は、行を返さないよりも、「holidex」の最新の日が必要なように思えました。 –

+0

申し訳ありませんが十分に明確ではありませんが、これを調べる時間をとっていただきありがとうございます。 – Armitage2k

関連する問題