繁体   English   中英

如何按照PostgreSQL中now()(将来的第一个)的距离进行排序

How to sort by distance from now() (future first) in PostgreSQL

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个date字段,显示为从今天开始的天数。 因此, 2055-01-011950-01-01将分别显示为正数和负数。 现在我想要对这些进行排序,以便非负数首先按升序排列,然后负数按降序排列。 例如:

0
1
2
3
4
-1
-2
-3
3 个回复

以下也可以:

 ORDER BY expiry < CURRENT_DATE, abs(expiry - CURRENT_DATE)

但是,此表单不会使用索引以所需顺序生成行。 如果您的查询将从中受益(从表中选择大多数行或使用限制),那么您将需要使用联合:

SELECT ... WHERE ... AND expiry >= CURRENT_DATE ORDER BY expiry
    UNION ALL
SELECT ... WHERE ... AND expiry < CURRENT_DATE ORDER BY expiry DESC
select * from @t
order by 
case when i >= 0 then 0 else 1 end,
case when i >= 0 then i else abs(i) end

如果你将'i'替换为差异计算而将@t替换为你的表,那么这应该可行

我用这个order by子句攻击了它:

ORDER BY CASE expiry >= CURRENT_DATE
         WHEN true THEN expiry
         ELSE CURRENT_DATE + (CURRENT_DATE - expiry) + interval '1000 years'
         END

由于日期是在今天的几年内,因此将负面日期推向未来是安全的。 然后它们与当前日期的距离相反。

它有效,但更优雅的解决方案会很好。

4 如何使“未来日期”倒计时至“从现在起5分钟”

我真的为此脚本苦苦挣扎。 这不是我的脚本,而且我显然不是最强的程序员。 我只是想修改此脚本,以代替设置日期:“日,月,年”(第5-8行),它只是获取当前时间,并将倒数计时器设置为从现在开始的xx分钟xx秒。 任何帮助都将是惊人的。 您可以在http://mobisin.com/txt ...

7 如何按位置距离对Laravel集合进行排序?

使用以下代码,我尝试执行以下操作: 获取所有Advertenties从我的数据库 计算其相关用户到客户位置的距离 解决 返回分页结果。 现在,它不按distance排序,我也不知道为什么。 在我看来,Laravel的orderBy方法应该按distan ...

9 如何按距离对地理位置进行排序?

我有一个XML文件,其中包含有关公交车站的信息(例如,公交车站的路线号,坐标(纬度,经度)等)。 我有一个任务:使用坐标打印最长的路线。 总的来说,我理解算法: 在路线编号与其坐标矢量之间进行匹配。 获取每条路线的长度(这是一条虚线,为了使代码更简单,它是直的,没关系) ,其中顶点是具有其 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM