【问题标题】:How to "use" TIMESTAMP postgres data type如何“使用” TIMESTAMP postgres 数据类型
【发布时间】:2022-01-26 17:29:06
【问题描述】:

我已将 Luxon 创建的日期时间值保存到 TIMESTAMP(3) 类型的 postgres 数据库列中。然后我想使用该值,将其转换为其他时区等。但是,我似乎无法弄清楚如何“使用”它。

我使用以下方法创建了对象

const { DateTime } = require("luxon");
const myDate = DateTime.now().toUTC().toISO()

然后我将它插入到 postgres 数据库中,插入到类型为 TIMESTAMP(3) 的列中。

我使用查询将其从数据库中提取出来。当我记录它时,它说它的值是:

console.log(extracted_date);                      //=> "2021-12-27T09:57:16.184Z"
console.log(typeof extracted_date);               //=> object

// The following return "unparsable" or undefined objects
DateTime.fromISO(extracted_date);
DateTime.fromObject(extracted_date);

我可以找到很多关于如何将日期插入 sql 的教程,但没有关于如何获取该日期对象并实际使用它的内容。例如,我想转换它的时区。

【问题讨论】:

  • 我想你可以只做DateTime.fromISO(extracted_date.toString())

标签: javascript sql node.js postgresql luxon


【解决方案1】:

要使用该日期对象,您可以启动一个新的日期,如下所示:

console.log(extracted_date);  //=> "2021-12-27T09:57:16.184Z"
const javascriptDate = new Date(extracted_date);

您可以直接使用它,也可以与 luxon 库一起使用。

console.log(javascriptDate.toGMTString()); // => "Mon, 27 Dec 2021 09:57:16 GMT"
console.log(javascriptDate.toISOString()); // => "2021-12-27T09:57:16.184Z"
console.log(javascriptDate.valueOf()); // => 1640599036184

这个对象核心实际上是一个表示自 1970 年 1 月 1 日 UTC 以来的毫秒数的值,一般来说,添加了时间和字符串解析函数。


更多信息

在某些系统中,日期作为值存储在数据库中 - date.valueOf() - 这使得(对于开发人员)您必须对其进行操作更清楚,并且可能会减少向用户显示错误时间戳的问题。另一方面 - 你失去了可读性。另一种选择是在您的系统中仅使用 UTC 时间,并在客户端或呈现数据之前转换时间戳。使用 UTC 将确保您的所有日期都具有相同的语言'。

如果您想了解有关时间戳的更多信息, 以下是一些参考资料:

UTC vs ISO format for time

What is the "right" JSON date format?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 2022-01-24
    • 2020-02-28
    • 2016-12-16
    • 1970-01-01
    • 2019-03-01
    • 2012-05-25
    • 2016-03-06
    相关资源
    最近更新 更多