我知道数据类型是TIMESTAMP、DATE、TIME等。我也知道我应该使用TIMESTAMP,因为它可以跟踪任何更改。
我从前端带来了日期,在我的反应组件中,日期是
const dateTime = new Date().toLocaleString("en-GB")
其输出为"0";2021年10月24日14:37:49";
如果我将数据类型设置为TIMESTAMP,就会出现错误。
问题是,接受上述日期和时间格式的数据类型应该是什么。我尝试过DATETIME,但它给出了一个错误,说DATETIME不存在。SQL查询:
ALTER TABLE user_info_2 ADD date_col1 TIMEDATE;
我是PostgreSQL的新手,所以任何帮助都将不胜感激。
问题不在于格式本身,而是PostgresDatestyle
的默认日期顺序是:
--Note the MDY date ordering
show datestyle ;
DateStyle
-----------
ISO, MDY
select '24/10/2021, 14:37:49'::timestamptz;
ERROR: date/time field value out of range: "24/10/2021, 14:37:49"
LINE 1: select '24/10/2021, 14:37:49'::timestamptz;
---Change date ordering to put date first
set datestyle = iso,DMY;
show datestyle ;
DateStyle
-----------
ISO, DMY
(1 row)
select '24/10/2021, 14:37:49'::timestamptz;
timestamptz
------------------------
2021-10-24 14:37:49-07
所以你有两个选择:
在postgresql.conf中"永久"更改
DateStyle
,或使用set datestyle = iso,DMY;
临时更改每个会话使用ISO格式:
select '2021-10-24, 14:37:49'::timestamptz;
timestamptz
------------------------
2021-10-24 14:37:49-07
我想说2)是首选,因为Postgres不存储格式,所以如何输入数据确实很重要。如果日期排序对用户很重要,那么在向用户显示输出时,请使用适当的格式。
typeof(Date().toLocaleString("en-GB"))
输出将为"字符串"。。。