1

重複の可能性:
Mysqlクエリ:現在の日付クエリを取得

今日の日付を含むいくつかのデータを選択するMySQLクエリが必要です。次のクエリを作成しました。

SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVAS
GROUP BY CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha, CRM_TRATATIVAS.ID_Categoria
HAVING (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or (CRM_TRATATIVAS.ID_Vendedor)=32) AND ((CRM_TRATATIVAS.Fecha)=Date()) AND ((CRM_TRATATIVAS.ID_Categoria)=14));

= Date()を削除すると、機能します。問題が何である可能性があるかについてのアイデアはありますか?

最終的なデータは、角かっことドットがないこのようなものを示しています(テーブルの作成方法が見つかりませんでした!

 Fecha                      Vendedor
 2012-12-03 10:12:13        (10)
 2012-12-03 12:14:16        (10)
 2012-12-03 09:15:46        (29)
 2012-12-03 13:35:56        (32)

修理済み!

このクエリを使用して修正しました。

SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVASGROUP BY CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha, CRM_TRATATIVAS.ID_Categoria
HAVING (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or (CRM_TRATATIVAS.ID_Vendedor)=32) AND ((DATE(CRM_TRATATIVAS.Fecha)) = CURDATE()) AND ((CRM_TRATATIVAS.ID_Categoria)=14));

FechaはDATETIME列だったので、参照の直前にDateを追加して日付に変換しました。

4

4 に答える 4

1

私はあなたが以下を望むかもしれないと思います:

SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32) 
    AND c.Fecha = Curdate()
    AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;

注:句のWHERE代わりに使用するようにこれを更新しました。HAVINGこのHAVING句は、フィルタリングする必要のある集計関数がある場合に使用します。また、リストGROUP BYに集計関数がない句を使用している理由もわかりません。SELECT

日付Fechaに日付と時刻があり、日付部分のみを一致させたい場合は、次を使用することをお勧めします。

SELECT c.ID_Vendedor, c.Fecha
FROM CRM_TRATATIVAS c
WHERE c.ID_Vendedor IN (10, 29, 32) 
    AND Date(c.Fecha) = Curdate()
    AND c.ID_Categoria=14
-- GROUP BY c.ID_Vendedor, c.Fecha, c.ID_Categoria;
于 2012-12-03T19:13:52.587 に答える
0

変更してみてください

((CRM_TRATATIVAS.Fecha)=Date())

((CRM_TRATATIVAS.Fecha)=Date(NOW()))

MySQLDATE()関数にはパラメータが必要ですが、それ自体では現在の日付を返しません。CURDATE()代わりに関数を使用することもできますDATE(NOW())

于 2012-12-03T19:13:19.123 に答える
0

クエリに欠けているものはありますか?集計関数の形式が必要ない場合は、GROUP BY/HAVING句を使用しないでしょう。

次のようなクエリはどうですか。

SELECT CRM_TRATATIVAS.ID_Vendedor, CRM_TRATATIVAS.Fecha
FROM CRM_TRATATIVAS
WHERE (((CRM_TRATATIVAS.ID_Vendedor)=10 Or (CRM_TRATATIVAS.ID_Vendedor)=29 Or
 (CRM_TRATATIVAS.ID_Vendedor)=32) AND ((CRM_TRATATIVAS.Fecha)=Date()) AND 
 ((CRM_TRATATIVAS.ID_Categoria)=14));
于 2012-12-03T19:16:43.420 に答える
0

変更してみてください:

CRM_TRATATIVAS.Fecha=Date()

これとともに:

DATE(CRM_TRATATIVAS.Fecha)=CURDATE()

CURDATE()現在の日付をDATE(Fecha)返し、の日付部分のみを返しますFecha(時間、分、秒は含まれません)。また、このようにクエリを作成することをお勧めします。

SELECT Distinct
  CRM_TRATATIVAS.ID_Categoria,
  CRM_TRATATIVAS.ID_Vendedor,
  CRM_TRATATIVAS.Fecha
FROM
  CRM_TRATATIVAS
WHERE
  CRM_TRATATIVAS.ID_Vendedor in (10, 29, 32)
  AND DATE(CRM_TRATATIVAS.Fecha) = CURDATE()
  AND CRM_TRATATIVAS.ID_Categoria=14
于 2012-12-03T19:54:36.183 に答える