PostgreSQL 输出的时间戳格式与 Javascript 时间戳格式不同

我无法将 SQL 的结果绑定到我的模型Javascript /Typescript。


在我的模型中,我有一个created_atwith types of的属性Date。


当我在 Postgres SQL 语句中使用 JSON 函数来避免关系的重复父行时,我将获得不同格式的时间戳。


这是一个简单的例子


SELECT

   a.*,

   (

      SELECT

         ROW_TO_JSON(profile) 

      FROM

         (

            SELECT

               *

            FROM

               profile p 

            WHERE

               p.account_id = a.id 

         )

         profile 

   )

   AS profile 

FROM

   account a 

WHERE

   a.id = 16

这是 JSON 格式的结果


{

   "id":16,

   "email":"test@gmail.com",

   "password":"$password",

   "role_id":0,

   "created_at":"2020-04-01T22:03:44.324Z",

   "profile":{

      "id":8,

      "username":"firmanjml",

      "gender":0,

      "bio":null,

      "avatar":"www.firmanjml.me/test.jpg",

      "account_id":16,

      "created_at":"2020-04-02T06:03:44.32498"

   }

}

我注意到来自帐户表的父行在末尾有 Z,created_at而转换为 JSON 的子表具有不同的时间戳格式。


有没有办法可以使所有时间戳都采用Javascript格式?


查询以创建模式和插入数据


CREATE TABLE "account"(

    id SERIAL primary key,

    email varchar(50) not null,

    password varchar(50) not null,

    role_id int2 default 0 not null, 

    created_at timestamp default now() not null

);


CREATE TABLE "profile"(

    id SERIAL primary key,

    username varchar(50) not null,

    gender int2 not null,

    bio varchar(50),

    avatar varchar(50),

    account_id integer not null REFERENCES account (id),

    created_at timestamp default now() not null

);


INSERT INTO "account" (email,"password","role_id",created_at) VALUES 

('test@gmail.com','$password',0,'2020-04-02 06:03:44.324');


INSERT INTO "profile" (username,gender,bio,avatar,account_id,created_at) VALUES 

('fimrnajml',0,NULL,'www.firmanjml.me/test.jpg',1,'2020-04-02 06:03:44.324');


湖上湖
浏览 81回答 1
1回答

jeck猫

使用 TO_CHAR() 函数格式化 SQL 中的时间戳,例如https://www.postgresqltutorial.com/postgresql-to_char/'YYYY-MM-DD"T"HH24:MI:SS.US"Z"' 的格式应该可以做到。这假设您所有的时间戳都采用 UTC(专业人士的做法 :-)您的 SQL 如下所示:SELECT   a.*,   (      SELECT         ROW_TO_JSON(profile)       FROM         (            SELECT               username,gender,bio,avatar,account_id,to_char(created_at, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"') created_at            FROM               profile p             WHERE               p.account_id = a.id          )         profile    )   AS profile FROM   account aWHERE   a.id = 16
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript