2016-05-26 9 views
-1

下の画像に示すように、日付範囲から日付の間に結果を取得したいと思います。利用可能な日付のより大きい日付とそれ未満の日付を見つけるには

私はこのクエリを試しましたが、動作しません。

DTT_EVT_startがテーブルの日付を大きくする必要があります。

誰でも私にどこの句で日付(時間ではない)列を使うことができますか?

SELECT * 
FROM `dwssgv_esp_datetime` 
WHERE (DATE_FORMAT(DTT_EVT_start, '%Y-%m-%d') < '2015-05-10') 
    AND (DATE_FORMAT(DTT_EVT_end, '%Y-%m-%d') > '2015-05-10') 

enter image description here

答えて

1

あなたは、単にのような、

ここ
SELECT 
      * 
    FROM 
      dwssgv_esp_datetime 
    WHERE 
      DTT_EVT_start < CAST('2015-05-10 00:00:00' AS DATETIME) AND 
      DTT_EVT_end > CAST('2015-05-10 00:00:00' AS DATETIME) 

を行うことができ、その巨大なテーブル

場合、それがパフォーマンスに影響を与えるようあなたは、 、DATE_FORMAT機能を回避することができます< 2015-05-10>は可変日付です。

OR

SELECT 
      * 
    FROM 
      dwssgv_esp_datetime 
    WHERE 
      DATE(DTT_EVT_start) < CAST('2015-05-10' AS DATE) AND 
      DATE(DTT_EVT_end) > CAST('2015-05-10' AS DATE) 
+0

時間だけではなく日付のみを入力することは可能ですか? –

+0

plz編集された回答を参照してください! – Hytool

1

このような何か?

SELECT * FROM dwssgv_esp_datetime WHERE DTT_EVT_start < '2015-05-10' AND DTT_EVT_end > ''2015-05-10' 
0

あなたはUNIX_TIMESTAMP形式で日付を変換し、ここでは、この

SELECT 
    * 
FROM 
    `dwssgv_esp_datetime` 
WHERE (UNIX_TIMESTAMP(DTT_EVT_start) < UNIX_TIMESTAMP('2015-05-10') 
AND (UNIX_TIMESTAMP(DTT_EVT_end) > UNIX_TIMESTAMP('2015-05-10') 
0

を試してみてください

を比較することができますが、単純なソリューションです:

SELECT * 
FROM dwssgv_esp_datetime 
WHERE 
    CAST('2015-05-10' AS DATE) 
    BETWEEN DATE(DTT_EVT_start) 
    AND DATE(DTT_EVT_end) 

BETWEEN AND値かどうかをチェックすることができます特定の範囲内にあるか否かを判断する。これを使うと、2回比較したい値を書く必要はありません。

関連する問題