我正在尝试根据分开的日期和时间字段创建一个时间戳。日期字段为“日期”类型,而时间字段为“ varchar”。该表有超过6万条记录。日期采用YYYY-MM-DD格式,即2017-07-25。时间采用HH:MIpm格式,即4:25 pm。
我运行以下查询尝试创建时间戳:
select *,
to_timestamp(TO_CHAR("date", 'YYYY-MM-DD')||' '||(case when "time"='' then '11:59pm' else "time" end), 'YYYY-MM-DD HH:MIpm') as REQUIRED_TIMESTAMP
from TABLE;
但是,它仅返回1023条记录。这就是使事情变得更奇怪的原因:
i。在随后的运行中,返回的记录并不总是相同的。但是,总是返回1023条记录。在一次运行中,前几个ID是43、55、63、69等,而在下一次运行中,ID将有所不同。有时我会收到以下错误:
Query 1 ERROR: ERROR: invalid value for "HH" in source string
ii。我改用CAST(as timestamp)
,它以不同的格式显示时间戳,但同样只显示1023条记录。
iii。不是一个特定的时间值被省略。时间为7:30 pm的一条记录可以省略,但另一条晚上7:30的记录显示得很好。
我的查询有问题吗?可能是数据有问题还是Redshift有问题?