gpt4 book ai didi

mysql - 在 postgres 中复制 MySQL yearweek 函数

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

将项目从使用 MySQL 转换为 postgres,但无法弄清楚如何复制 MySQL 的 yearweek 函数。

例如MySQL中的如下:

select CAST(yearweek(user.created_at) AS CHAR CHARACTER SET utf8) as yrwk, user.created_at

返回:

"201452"    "2014-12-31 00:00:00"   "1"
"201601" "2016-01-05 00:00:00" "60"
"201601" "2016-01-09 00:00:00" "47"
"201623" "2016-06-08 14:40:37" "69"

如何使用 postgres 获得相同的结果?我已经尝试对 YEAR 和 WEEK 使用 EXTRACT 函数,然后将它们连接起来,但 postgres 有时会为年初的日期返回 53,这会使一切都乱七八糟。

最佳答案

你可以使用函数TO_CHAR使用适当的格式字符串。

要准确复制 YEARDATE 的行为,必须将日期截断到包含周的开始。

SELECT TO_CHAR(DATE_TRUNC('week', NOW()), 'YYYYWW')
-- outputs:
201826

并且,使用您的示例日期:

WITH dates(dt) AS (
VALUES
('2014-12-31 00:00:00'::timestamp),
('2016-01-05 00:00:00'::timestamp),
('2016-01-09 00:00:00'::timestamp),
('2016-06-08 14:40:37'::timestamp)
)
SELECT dt, TO_CHAR(DATE_TRUNC('week', dt), 'YYYYWW') yrwk
FROM dates;
-- outputs:
dt | yrwk
---------------------+--------
2014-12-31 00:00:00 | 201452
2016-01-05 00:00:00 | 201601
2016-01-09 00:00:00 | 201601
2016-06-08 14:40:37 | 201623

关于mysql - 在 postgres 中复制 MySQL yearweek 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51073296/

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