PostgreSQL的有效时间戳格式

mrwjdhj3  于 2023-01-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(140)

例如:2000 - 99 - 00是PostgreSQL数据库列的有效时间戳,但不带时区值?或者天数的最大值\最小值为:01,31;对于01,12个月?

qvtsj1bj

qvtsj1bj1#

2000-99-00在PostgreSQL中不是有效的时间戳,在任何标准的地面系统中也不是。您建议的最大值/最小值过于简单化-系统根据公元前4713年到公元294276年之间的实际月份长度和闰年验证输入。

--year 2000 was a leap year so February had 29 days
select '2000-02-29'::timestamp;
--      timestamp
-----------------------
-- 2000-02-29 00:00:00

--year 2001 was not a leap year so February had 28 days
select '2001-02-29'::timestamp;
--ERROR:  date/time field value out of range: "2001-02-29"
--LINE 1: select '2001-02-29'::timestamp;
--               ^

select '2000-99-00'::timestamp;
--ERROR:  date/time field value out of range: "2000-99-00"
--LINE 1: select '2000-99-00'::timestamp;
--               ^
--HINT:  Perhaps you need a different "datestyle" setting.

如果是非标准格式,可以在to_timestamp()中设置掩码,也可以在datestyle设置中设置默认输入输出格式。
对于大多数常用的RDBMS,如果您只想运行一个快速测试,而不必设置自己的集群,您可以使用在线工具:dbfiddle.ukdb-fiddle.com,sqlfiddle.com

相关问题