为什么PostgreSQL会抱怨时间戳“0000-00-00 00:00:00”?

3
根据Postgres关于日期/时间的手册timestamp类型可以从公元前4713年一直延伸到未来数十亿年。那么,为什么Pg会抱怨'0000-00-00 00:00:00'不是一个有效的时间戳呢?

1
到目前为止,“大爆炸”尚未发生。 - Luc M
1
哎呀,哎呀,哎呀... 让我们把它留在那里作为证据,证明确实有一些愚蠢的问题。 <尴尬> - punkish
1
修复了链接。请不要链接到已经过时的手册版本。PostgreSQL 8.2在去年已经到达生命周期的尽头请考虑这个链接 - Erwin Brandstetter
3个回答

10

00不是一个有效的月份或日期。


6
0000年也不是一个有效的年份。 - wildplasser

8
你可能在想:

你也许会想到:

'allballs'::time

这与以下代码等效:

'00:00:00'::time

适用于数据类型time,但不适用于timestamp
如果您正在寻找最小可能的时间戳值,请使用:

'-infinity'::timestamp

根据文档,它是所有时间戳中最早的。

1
这一定是我见过的最奇怪的内置函数之一。说实话,如果你没有提供文档链接,而且我自己也没有尝试过,我都不会相信PostgreSQL会包含一个叫做“allballs”的东西。 - user554546
1
@JackManey:当我第一次看到它时,我也笑了。这是一个历史性的事情。早些时候,还有用于相同目的的“z”和“zulu”,但这些在Postgres 7.4中被删除了。背后的原因是:在旧系统上,很难区分字母“O”和数字“0”。 - Erwin Brandstetter

2

月份或日期为 00 的时间戳是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接