我发现了一件奇怪的事。如果时间戳值减去另一个,则Redshift将返回一个奇怪的前缀。例如,
从table_1
中选择table1.c_timestamp - table1.c_timestamp
期望结果应该是ZERO或类似的东西,因为这两个时间戳值是相同的。 但是,我收到的是“5012369年4个星期一”,我不知道Redshift如何计算结果。
有没有人能给我看一些线索?
由于
答案 0 :(得分:4)
在日期时间之间减去的正确方法是:
select datediff(seconds, table1.c_timestamp, table1.c_timestamp) from table_1
当然,从自身中减去时间戳并没有多大意义,因为这显然会返回0,但我认为你只是将其作为测试运行。
答案 1 :(得分:3)
与上述海报相反, Datediff并没有完全减去,而是计算选择的datepart在两个时间戳之间开始的次数。
datediff(second, '2018-04-10 00:00:00.001','2018-04-10 00:00:00.999')
>> 0
select datediff(second, '2018-04-10 00:00:00.999','2018-04-10 00:00:01.001')
>> 1
SELECT
round(((EXTRACT('epoch' FROM TIMESTAMP '2018-05-27 09:59:59.999') - EXTRACT('epoch' FROM TIMESTAMP '2018-05-27 09:59:59.001'))*1000 + EXTRACT(millisecond FROM TIMESTAMP '2018-05-27 09:59:59.999') - EXTRACT(millisecond FROM TIMESTAMP '2018-05-27 09:59:59.001'))::real/1000)