问题描述
我在一个文件上构建了一个 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 的情况下有效,而在其他情况下无效,即使使用强制转换的外部表的转换值与我正在比较的其他值的格式相同。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)