postgresql 在node-postgres模块上显示带时区的日期类型

yftpprvb  于 11个月前  发布在  PostgreSQL
关注(0)|答案(3)|浏览(78)

我已经将输入数据以日期格式存储在postgres数据库中,但是当我在浏览器中显示日期时,它会显示时区日期并将其从UTC转换。例如,我将日期存储为2020-07-16。但是当我显示日期时,它会变成2020-07-15T18:00:00.000Z。我尝试使用select mydate::DATE from table只获取日期,但它仍然显示时区日期。我使用的是node-我的node应用程序中的postgres模块。我怀疑这是node-postgres模块上的一些配置?来自他们的doc
node-postgres将DATE和TIMESTAMP列转换为在process.env.TZ设置的节点进程的本地时间
有没有什么方法可以让我只解析日期?如果我像这样查询SELECT TO_CHAR(mydate :: DATE, 'yyyy-mm-dd') from table,我会得到2020-07-16,但这只是为了获取日期,需要做很多工作。

o8x7eapl

o8x7eapl1#

您可以创建自己的日期和时间类型解析器:

const pg = require('pg');
pg.types.setTypeParser(1114, function(stringValue) {
  return stringValue;  //1114 for time without timezone type
});

pg.types.setTypeParser(1082, function(stringValue) {
  return stringValue;  //1082 for date type
});

字符串
类型id可以在文件中找到:node_modules/pg-types/lib/textParsers.js

iaqfqrcu

iaqfqrcu2#

它在这里被拼出来:
https://node-postgres.com/features/types
date / timestamp / timestamptz

console.log(result.rows)
// {
// date_col: 2017-05-29T05:00:00.000Z,
// timestamp_col: 2017-05-29T23:18:13.263Z,
// timestamptz_col: 2017-05-29T23:18:13.263Z
// }

bmc=# select * from dates;
  date_col  |      timestamp_col      |      timestamptz_col
------------+-------------------------+----------------------------
 2017-05-29 | 2017-05-29 18:18:13.263 | 2017-05-29 18:18:13.263-05
(1 row)

字符串

jjhzyzn0

jjhzyzn03#

原因是当你查询日期列时,它就是一个日期。

  • 不是字符串,所以我们需要先将其转换为字符串
  • 与将.toString()与JavaScript一起使用相同。

好吧,回到你的问题:试试看:

SELECT DATE(date_added)::text AS date_added from [table_name]

字符串

相关问题