如何选择小于时间戳的日期和时间?

时间:2019-07-26 13:56:52

标签: sql postgresql

我要加入,必须选择日期和时间小于特定日期和时间的行。我的表中有一个日期和时间列(组合),称为“小时”。

我正在尝试将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”子句附近出现语法错误。

2 个答案:

答案 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子句中缺少逗号','。