sql - 如何限制/限制日期时间的浮点值

标签 sql postgresql

对于最小情况

如果 min(ticktime)::TIMESTAMP2014-01-02 01:14:45.5 ,我想将它转换为 2014-01 -02 01:14:45

对于最大情况

如果 max(ticktime)::TIMESTAMP2014-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/

相关文章:

sql - 将逗号分隔的 id 插入表中

sql - 如何在 PostgreSQL 中通过排序删除固定数量的行?

sql - 为什么 Sql server 2014 在检查日期时运行很慢?

php - 在 MySQL 中,如何只选择给定列具有特定值的行?

mysql - 两次查询 SQL 列以构建 HTML 表

sql - 如何获取具有相同 ID 但其他列中具有不同值的所有行?

ruby-on-rails - Postgresql 和 Rails 中的日期问题

ruby-on-rails - st_split 返回原始行

javascript - 使用 bcrypt 进行密码散列

PostgreSQL 游标错误