0

昨夜助けてもらった質問がありますが、別のことで行き詰っています。

私が持っているコードは

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id

私が今やりたいことは、今日の日付に入力された場合にのみ結果を表示することですか? 日付欄は にありtable2ます。日付列の形式は日付と時刻 (例: 1341241153) ですが、日付が現在の日付と一致するかどうかのみを確認する必要があります。それが明確であることを願っています。

どんな助けでもありがたく受け取られます!

編集: これは MySQL データベースです。これまでにすべてのソリューションを試しましたが、何も機能しませんでした。わかりづらくてすみません!!

最終編集: 質問が十分に明確ではなかったので、迅速な回答を得るために再度投稿しました。完全な解決策を含む新しい質問は、ここで見ることができますリンク

4

4 に答える 4

1

の代わりにgroupが必要な場合:havingwhere

SELECT a.name, COUNT(*) AS num 
FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
GROUP BY status_id
having b.date  = 1341241153
于 2012-07-13T20:19:24.417 に答える
0

これがどのデータベースタイプかわかりません.Oracleの場合は、日付を切り捨てる必要があります:

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
WHERE TRUNC(SYSDATE) = TRUNC(b.dateColumn)
GROUP BY status_id

MySQL または MSSQL の場合、構文は少し異なりますが、同様に単純です。

于 2012-07-13T20:20:11.417 に答える
0

SQL Server 2008 では、これを使用できます。

SELECT a.name, COUNT(*) AS num FROM table2 b 
INNER JOIN table1 a 
ON b.status_id=a.id 
WHERE dateValue BETWEEN 
   CAST(GETDATE() AS DATE) AND DATEADD(DAY, 1, CAST(GETDATE() AS DATE)) 
GROUP BY status_id
于 2012-07-13T20:22:36.287 に答える
0

かなり頻繁に行う場合は、独自の関数を作成してこれを行うこともできますが、渡された日付を平坦化するコードを次に示します。

SELECT a.name, COUNT(*) AS num
FROM table2 b 
INNER JOIN table1 a ON b.status_id=a.id 
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, a.DateColumn)) = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
GROUP BY status_id
于 2012-07-13T20:19:05.917 に答える