This is the table structure in PostgreSQL 10.
尽管“日期”是一个int
,它代表 yyyy mm dd 日期。我正在尝试写一个SELECT
按日期排序,当 BC=true 时desc
,因此日期将按正确的顺序 -500 01 02 然后 -500 01 03 (yyyy mm dd)
当 BC=false 时asc
,因此日期将再次以正确的顺序排列:1500 01 02,然后是 150 01 03 (yyyy mm dd)
我想出了这个SELECT * FROM test ORDER BY bc=true desc, bc=false asc;
这在公元前日期上效果很好,但它翻转了公元日期(15000103 然后 15000102,这是错误的)。
我知道有date
类型可用,但我希望它能作为精确 BC 日期的破解。
我怎样才能改变我的SELECT
根据 BC 布尔列正确排序日期?
Thanks
我不认为bc=true desc, bc=false asc
运转良好。当我拥有计算机时,我会再次检查并稍后更新我的答案。
也许我的解决方案只是一个技巧或欺骗。这不是合法的方式。你可以试试这个。
SELECT * FROM test
ORDER BY bc DESC, CASE WHEN bc THEN date*(-1) ELSE date END ASC;
Or
SELECT * FROM test
ORDER BY bc DESC, CASE WHEN bc THEN abs(date) ELSE date END ASC;
希望我的回答能让您满意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)