我要加入,必须选择日期和时间小于特定日期和时间的行。我的表中有一个日期和时间列(组合),称为“小时”。
我正在尝试将where子句中的字符串转换为时间戳(通过使用to_timestamp)。如果将where子句更改为选择查询,则该子句本身具有完美的地位。但是,当在我的代码(联接)中使用它时,会导致语法错误。
Select
t1.revenue,
t2.impressions
from t1
left join t2 on t1.id = t2.id
where t2.hour < to_timestamp('2019-07-24 23:59:59','YYYY-MM-DD HH24:MI:SS')
我的“ where”子句附近出现语法错误。
答案 0 :(得分:2)
语法错误可能是由于_FillValue
子句中缺少逗号引起的。但是除此之外,您的查询还有其他问题。考虑以下更新版本:
SELECT
鉴于您正在从select
t1.revenue,
t2.impressions
from t1
left join t2
on t1.id = t2.id and
t2.hour < '2019-07-24 23:59:59'::timestamp;
到t1
进行左联接,因此当前出现在t2
子句中的t2
的限制很可能应该移至连接的WHERE
子句。不这样做可能意味着从ON
中过滤掉记录,这将破坏左联接的目的。
还要注意,即使您甚至不需要这样做,也可以使用t1
将字符串文字转换为时间戳。
答案 1 :(得分:0)
您的问题是,您在SELECT
子句中缺少逗号','。