编辑:我一直盯着屏幕太久,意识到我实际上放下了 6 点钟 (18) 而不是 4 点钟 (16) ,就像我需要的那样。我有一排与 18 匹配,这就是为什么只有一排不断被退回的原因。从技术上讲,如果我将代码更改为 16,我的代码就可以工作,但是@Gordon Linoff 的答案使用 JOIN 会快得多。我的语句需要 0.33 秒才能返回,而 Gordon 需要 0.0003 秒。
我有三个表,我试图通过两个日期时间列和一个日期列来匹配行。我当前的 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
这是我对语句的期望。我想查看所有具有匹配date
和datetime
标记的行。puyforecast
两者中的两个时间戳tacforecast
应该只是时间为 18:00(下午 4 点)的行。比较时我不在乎分钟或秒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,日期匹配一直持续到当前日期。这两datetime
列在时间上比列更远date
。
我一直在尝试一些搜索,但我似乎无法找到我正在搜索的内容。