sql - 从 postgres 中的列创建时间戳

标签 sql postgresql date timestamp julian-date

我在一列中有 2 行,其中一行为我提供儒略日期(自 1970 年 1 月 1 日以来的天数,当天为 1),第二列是当天午夜后的分钟数(为什么这样做,我不知道)。

我想让我的 sql 查询从这两列中创建时间戳。

如果我可以提前访问数据,我可以做类似SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable,但由于 X 和 Y 是我正在查询的表的实际成员,所以事情没那么简单。

有人有什么建议吗?

本质上,我正在寻找等效的[合法]解决方案:

SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'my_col1 DAYS' + INTERVAL 'my_col2 MINUTES' AS my_time FROm mytable

我可以让我的服务器端代码为我做这件事,但如果我可以将它构建到我的查询中,我会很高兴。

最佳答案

您可以构造区间字符串,然后将它们转换为 interval 类型:

SELECT
    timestamp '1970-01-01 00:00:00' +
    cast(my_col1 || ' DAYS' AS interval) +
    cast(my_col2 || ' MINUTES' AS interval) my_time FROM mytable

关于sql - 从 postgres 中的列创建时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3417802/

相关文章:

sql - 选择具有撇号值 postgresql 的行

date - 按时间范围不同计数日期

php - 复杂的 SQL 弄清楚如何提取最新数据

mysql - 多个连接的多个计数

mysql - 选择满足 where 子句的行以及共享公共(public)键的行

postgresql - pgAdmin III 还原 PLAIN 备份

postgresql - Sqoop - 在保存的作业中使用模式

vba - 为什么向日期传递 1 时会返回 "31-12-1899"?

android - ICS 新日期选择器不工作

sql - 如何在 oracle 中使用 regexp_replace 允许在 oracle 中使用重音字符?