对于最小情况
如果 min(ticktime)::TIMESTAMP
是 2014-01-02 01:14:45.5
,我想将它转换为 2014-01 -02 01:14:45
对于最大情况
如果 max(ticktime)::TIMESTAMP
是 2014-01-02 01:14:45.5
,我想将它转换为 2014-01 -02 01:14:46
SELECT DISTINCT ON (1) generate_series ( min(ticktime)::TIMESTAMP, max(ticktime)::TIMESTAMP, '1 second'::interval) AS ticktime
FROM cffexes
最佳答案
您可以像这样将结果转换为无秒的时间戳
:
SELECT DISTINCT ON (1) generate_series (
min(ticktime)::TIMESTAMP(0),
max(ticktime)::TIMESTAMP(0)+1,
'1 second'::interval) AS ticktime
FROM cffexes;
如果您想要秒数以外的下限/上限时间,请使用 date_trunc()
。
当然,如果 max(ticktime)
恰好是偶数秒,这会留下一个非常小的漏洞,您将生成太多。所以你可以试试这个,但要意识到浮点值对相等是出了名的不友好。
SELECT DISTINCT ON (1) generate_series (
min(ticktime)::TIMESTAMP(0),
max(ticktime)::TIMESTAMP(0) + (max(ticktime)::TIMESTAMP(0)=max(ticktime)::TIMESTAMP)::int,
'1 second'::interval) AS ticktime
FROM cffexes;
关于sql - 如何限制/限制日期时间的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27643958/