我想知道是否有其他人遇到过或知道这方面的信息。
今天是2014年11月3日,如果我检查2013年11月5日是否在去年内,我会根据检查方式得到不同的答案:1年与365天
select now() - '20131105' as diff,
case when now() - '20131105' <= '1 year' then 'within year' else 'not within year' end as yr_check,
case when now() - '20131105' <= '365 days' then 'within 365 days' else 'not within 365 days' end as day_check
2014-11-03 16:27:38.39669-06; 363 days 16:27:38.39669; not within year; within 365 days
看来在11月9日的时候,没关系
select now() as right_now, now() - '20131109' as diff,
case when now() - '20131109' <= '1 year' then 'within year' else 'not within year' end as yr_check,
case when now() - '20131109' <= '365 days' then 'within 365 days' else 'not within 365 days' end as day_check
2014-11-03 16:31:12.464469-06; 359 days 16:31:12.464469; within year; within 365 days
有人知道吗?或者有什么关于日期计算的有趣的东西吗?
postgres版本是9.2.4
最佳答案
或者有什么关于日期计算的有趣的东西吗?
很好笑,但不会让你笑。
十二个月等于一年,不是吗?
=> SELECT '12 months'::interval = '1 year'::interval;
?column?
----------
t
很好。有道理。嗯-不知道一个月有多长。
=> SELECT '30 days'::interval = '1 month'::interval;
?column?
----------
t
很公平。假设他们得选点东西。
嗯-但那意味着。。。
=> SELECT '360 days'::interval = '12 months'::interval;
?column?
----------
t
这似乎意味着。。。
=> SELECT '360 days'::interval = '1 year'::interval;
?column?
----------
t
那不可能是对的!他们需要做的是有一个月等于30.41666天。不,等等,闰年呢?嗯-这会影响几周吗?啊!
基本上,你不能在时间单位之间进行合理的转换。一分钟不到60秒,一天不到24小时,一年不到52周,甚至365天。不幸的是,人类(特别是顾客塑造的人类)喜欢在时间单位之间转换,所以我们最终会陷入这样的混乱。
PostgreSQL的系统并不比其他任何系统更疯狂,事实上比大多数系统都好。
关于postgresql - postgres“1年”等于“360天”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26724547/