編集:私は画面を見つめすぎていて、実際には必要な4時(16)ではなく6時(18)を下に置いていることに気づきました。18に一致する行が1つありました。そのため、返される行は1つだけでした。技術的には、コードを16に変更するとコードは機能しますが、@ Gordon Linoffの答えは、JOINを使用するとはるかに高速になります。私のステートメントは戻るのに0.33秒かかり、Gordonのステートメントは0.0003かかります。
2つの日時列と日付列で行を一致させようとしている3つのテーブルがあります。現在のSQLコマンドは次のようになります。
SELECT puyforecast.timestamp, tacforecast.timestamp, date
FROM puyforecast, tacforecast, stnrain
WHERE puyforecast.timestamp LIKE CONCAT(date, ' 18:%')
AND tacforecast.timestamp LIKE CONCAT(date, ' 18:%');
これにより、最初に一致する行のみがプルアップされます。
2013-01-28 18:37:33, 2013-01-28 18:37:34, 2013-01-28
これは、ステートメントから期待されるものです。一致する行とスタンプがあるすべての行を表示したい。両方からの2つのタイムスタンプは、時刻が18:00(午後4時)である行のみである必要があります。を比較するときは分や秒は気にしないので、それらがマッチングに影響を与えることはないはずです。date
datetime
puyforecast
tacforecast
datetimes
次のようなエントリが表示されるはずです。
2013-01-28 18:37:33, 2013-01-28 18:37:34, 2013-01-28
2013-01-29 18:00:02, 2013-01-29 18:00:34, 2013-01-29
2013-01-30 18:00:02, 2013-01-30 18:00:34, 2013-01-30
...
および&c、現在の日付まで日付の照合が行われます。2つdatetime
の列は、列よりも時間的に遡りますdate
。
何度か検索してみましたが、探しているものが見つからないようです。