gpt4 book ai didi

postgresql - 为什么 postgres date_trunc 返回 24 小时?

转载 作者:行者123 更新时间:2023-11-29 12:36:34 31 4
gpt4 key购买 nike

正是问题所说的。

mydb=> select '2016-01-03 24:00'::timestamp;
timestamp
---------------------
2016-01-04 00:00:00
(1 row)

这是我所期望的。

mydb=> select date_trunc('seconds', '2016-01-03 23:59.9999999999'::timestamp);
date_trunc
---------------------
2016-01-03 00:24:00
(1 row)

嗯。等等,什么?

最佳答案

它与 date_trunc 无关 ... 一旦您引入小数点,23:59.9999999999 将被解释为分钟和秒而不是小时和分钟。

没有小数点

db=# select '2016-01-03 23:59'::timestamp;
timestamp
---------------------
2016-01-03 23:59:00
(1 row)

带小数点

db=# select '2016-01-03 23:59.9999999'::timestamp;
timestamp
---------------------
2016-01-03 00:24:00
(1 row)

这是可以理解的,考虑到您期望得到的结果,但您似乎在此处的结果中将 24 分钟误读为 24 小时。

作为旁注,一旦您超过小数点后六位数字(即微秒),四舍五入就会开始:

db=# select '2016-01-03 23:59.999999'::timestamp;
timestamp
----------------------------
2016-01-03 00:23:59.999999
(1 row)

关于postgresql - 为什么 postgres date_trunc 返回 24 小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37712491/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com