在postgresql中,怎么将时间格式化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在postgresql中,怎么将时间格式化相关的知识,希望对你有一定的参考价值。

比如表中的时间列date有值如下:2009-05-31 17:21:21.203。
我要怎么样写select,将查询的时间列格式化成2009-05-31。
谢谢高手赐教。

参考技术A 用 to_date 函数,如 select to_date('2009-05-31 17:21:21.203','yyyy-mm-dd')

将(来自 postgresql 的日期和时间戳)转换为 javascript 时间

【中文标题】将(来自 postgresql 的日期和时间戳)转换为 javascript 时间【英文标题】:convert (date and timestamp from postgresql) to javascript time 【发布时间】:2020-06-06 06:57:52 【问题描述】:

我在 PostgreSQL 表中有两列(开始日期(日期格式)和取消日期(时间戳格式))。一个是日期格式,另一个是时间戳格式。我想得到天数中两个值之间的差异。我正在用 javascript 发送数据。

如何在javascript中计算天数的差异?例如,一个值为 2010-10-14。第二个值是 2010-10-16 04:05:06。相差 3 天。

我的问题是我在 API 响应中以 PostgreSQL(日期和时间戳)格式获取这两个值。一个简单的区别在 javascript 中不起作用(start_date-cancellation_date)。

【问题讨论】:

【参考方案1】:

Javascript 日期对象在转换为毫秒之前无法进行比较。

var now = new Date(); // create new date - today
var then = new Date(now.getDate()+5); // create new date that's now + 5 days (bad variable name, sry)
var nowAdj = now.getTime(); // now adjusted to milliseconds
var thenAdj = then.getTime(); // then adjusted to milliseconds
var differenceInDays = Math.round((thenAdj - nowAdj)/(1000*60*60*24)) // Subtract now from then and multiply the results by the magic formula to return milliseconds to days.

编辑:清理了一下,“then”仍然是一个糟糕的变量名;)

【讨论】:

【参考方案2】:

您可以将日期转换为新的日期对象并计算差值如下:

        var date1 = new Date("2010-10-14");
        var date2 = new Date("2010-10-16 04:05:06");
        var timeDiff = Math.abs(date2.getTime() - date1.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
        console.log(diffDays);

【讨论】:

@sulil lama 对于某些日期 javascript 控制台打印无效日期。 @code0079,当您的日期字符串为空时,新日期将默认为 1970,它将不起作用。保存到数据库并从数据库中检索时,您需要确保您的日期有效..

以上是关于在postgresql中,怎么将时间格式化的主要内容,如果未能解决你的问题,请参考以下文章

postgresql 将数字转换为日期和格式

如何将 bigint 字段格式化为 Postgresql 中的日期?

将 PostgreSQL SQL 转储转换为 PostgreSQL 自定义格式转储

postgresql数据库中判断是否是数字和日期时间格式函数

将具有日期和纪元格式值的字符串列转换为 postgresql/Tableau prep 中的日期列

在 PostgreSQL 上设置默认日期格式