1

2 つの日付と 2 つの時刻の間の値を返すクエリを作成したい...

DATE 値と TIME 値は異なる列にあり、DATE は FECHA と呼ばれ、TIME は HORAIN と呼ばれます。

DATE クエリだけで 4 つの可能な値があります。

値 1 は Date 2012-05-07 time 02:45:00 値 2 は Date 2012-05-07 time 12:00:00 値 3 は Date 2012-05-08 time 04:35:00 値 4 は Date 2012 -05-08 時間 07:30:00

私が取得したいのは、最初の日からの 07:00:00 から 23:59:59 までの結果と、2 日目からの 00:00:00 から 06:59:59 までの値です (つまり、07 からの間隔午前 06:59 まで)

これは私のクエリで、NO VALUES を返しています... 必要な要件に一致するため、VALUE 2 と VALUE 3 を返す必要があります。

SELECT * FROM mytable
WHERE
(DATE(fecha)>='2012-05-07' AND TIME(horain)>='07:00:00')
AND
(DATE(fecha)<='2012-05-08' AND TIME(horain)<='06:59:59');

私は何を間違っていますか?:(

4

4 に答える 4

0

時間と日付は別々にチェックされます

where句を再構築し、日付部分を省略した場合、次のようになります。

SELECT * FROM mytable 
WHERE TIME(horain)>='07:00:00' AND
TIME(horain)<='06:59:59'

両方が真になることは決してないので、これはあなたに結果を与えることは決してありません。あなたができることは、日付と時刻のフィールドを組み合わせることです

SELECT * FROM mytable 
WHERE
concat(fecha,' ',horain) as date BETWEEN '2012-05-07 07:00:00' AND '2012-05-08 06:59:59';
于 2012-05-08T08:45:21.973 に答える
0

一度に 1 ステップずつデバッグしてみてください。できるだけ多くの制限を取り除き、レコードを取得するかどうかを確認してください。レコードを取得したら、一度に 1 つの条件を追加します。

皮切りに:

SELECT * FROM mytable

続ける:

SELECT * FROM mytable
WHERE
 DATE(fecha)>='2012-05-07'

など、すべてのレコードを切り取る条件を見つけ、それがなぜ起こっているのかを確認するまで、

于 2012-05-08T08:42:32.553 に答える
0

試すSELECT * FROM mytable WHERE FECHA >= 2012-05-07 AND horain >= 07:00:00) AND FECHA <= 2012-05-08 AND horain <= 06:59:59 );

于 2012-05-08T08:42:36.670 に答える
0

を使用して結果を取得できますConcat()。2 つのフィールド value.so を連結fechahorainます。フィールド value と連結して、以下のように結果を検索できます。

SELECT *   FROM `mytable` WHERE (Concat(`fecha`, ' ', `horain`, '') <= '2012-05-08 06:59:59') AND (Concat(`fecha`, ' ', `horain`, '') >= '2012-05-07 07:00:00')

Concat()関数は 4 つのパラメーターを取ります。

  1. Value1
  2. String from which concatenate value1 to value2
  3. Value2
  4. String want to concatenate in last

うまくいけば、それはあなたに役立つでしょう

ありがとう。

于 2012-05-08T08:58:03.880 に答える