频谱日期比较问题

我在一个文件上构建了一个 Redshift 外部表,该文件具有一些格式为“MM/DD/YYYY HH:MI:SS.SSSSSS”的时间戳值。所以我将 column_A 定义为 varchar。

外部表中的实际值:

列_A

02/09/2021 18:00:00

但是当我将其与时间戳值进行比较时,它不起作用。

--这不会给我任何结果

SELECT * FROM external_table WHERE cast(column_A as timestamp) > cast('01/01/2010 00:00:00' as timestamp); 

--这也不起作用

SELECT * FROM external_table WHERE cast(column_A as timestamp) > cast('2010/01/01 00:00:00' as timestamp); 

但是,当我在物理表的时间戳列中保留相同的 '2010/01/01 00:00:00' 值并执行此查询时:

--它给了我输出

SELECT * FROM external_table as ext
JOIN physical_table as phy ON cast(ext.column_A as timestamp) > phy.column; 

但是当我将连接转换为子查询时,它再次没有输出

SELECT * FROM external_table as ext
where cast(ext.column_A as timestamp) > (SELECT column FROM physical_table ) as phy ; 

有人可以让我知道为什么比较仅在 JOIN 的情况下有效,而在其他情况下无效,即使使用强制转换的外部表的转换值与我正在比较的其他值的格式相同。

mengxt001 回答:频谱日期比较问题

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/841366.html

大家都在问