gpt4 book ai didi

sql - PostgreSQL:选择整数作为日期或时间戳

转载 作者:行者123 更新时间:2023-11-29 11:37:55 27 4
gpt4 key购买 nike

我有一个表,其中有多个整数列:年、月和日。不幸的是,虽然这三个应该从一开始就被分组到一个 DATE 列中,但我现在卡住了,现在需要这样查看它。是否有一个函数可以按照以下方式执行某些操作:

SELECT makedate(year, month, day), othercolumn FROM tablename;

SELECT maketimestamp(year, month, day, 0, 0), othercolumn FROM tablename;

最佳答案

你可以

SELECT format('%s-%s-%s', "year", "month", "day")::date
FROM ...

或使用日期数学:

SELECT DATE '0001-01-01'
+ ("year"-1) * INTERVAL '1' YEAR
+ ("month"-1) * INTERVAL '1' MONTH
+ ("day"-1) * INTERVAL '1' DAY
FROM ...

坦率地说,令人惊讶的是 PostgreSQL 没有提供您所描述的日期构造函数。这是我应该考虑为其编写补丁的事情。

事实上,快速浏览一下源代码就会发现 src/backend/中已经有一个 C 级别的 int date2j(int y, int m, int d) 函数实用程序/adt/datetime.c。它只需要在 SQL 级别使用包装器公开以转换为 Datum

好的,now here's a simple makedate extension它添加了一个用 C 实现的函数,名为 makedate。如果您不想编译和安装扩展,还提供纯 SQL 版本。我将为 9.4 commitfest 提交 C 函数;同时可以安装该扩展以提供快速简单的日期构造函数:

regress=# SELECT makedate(2012,01,01);
makedate
------------
2012-01-01
(1 row)

关于sql - PostgreSQL:选择整数作为日期或时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672538/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com