gpt4 book ai didi

sql - Postgresql to_char 添加字符到日期

转载 作者:行者123 更新时间:2023-11-29 11:56:09 25 4
gpt4 key购买 nike

我想选择这种格式的日期:2018-11-25T16:00:00Z

所以我试着这样做:

select to_char(registration_date, 'YYYY-MM-DDTHH24:MI:SSZ')
from ...

但它的输出是:

2018-11-01STH24:17:35Z 

char 'T' 改变了日期输出而不是仅仅在中间打印它。我试图像这样在字符“T”旁边添加空格:

选择 to_char(registration_date, 'YYYY-MM-DDT HH24:MI:SSZ')

它有效,但我需要没有空格的日期。

如何将字符'T'添加到日期的中间,输出将与第一个示例相同?

最佳答案

是的,这真的很有趣。我可以复制它:

SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DDTHH24:MI:SSZ')

给予

2018-11-01STH24:21:24Z  -- note the S

SELECT to_char('2018-11-04 15:21:24'::timestamp, 'YYYY-MM-DDTHH24:MI:SSZ')

给予

2018-11-04THH24:21:24Z -- note that THH still seems to remain as in the format string

这里的问题是格式值TH。该字符串被解释为“序数后缀”。它为“第一”、“第二”、“第三”、“第四”等添加了后缀“ST”、“ND”、“RD”和“TH”。在您的格式字符串中,它由您的 T 和格式字符串 HH24 组合而成。

参见:

SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DDTH')

给予

2018-11-01ST 

SELECT to_char('2018-11-04 15:21:24'::timestamp, 'YYYY-MM-DDTH')

给予

2018-11-04TH

所以实际上你上面的例子是可以解释的。 S 实际上是 STH24THH24 的未解释其余部分(其中 >TH 已被用作序数后缀)。与第二个示例相同,其中 TH 再次转换为 TH,因此它似乎被忽略了。


您的解决方案是将 T 放入双引号中:

SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DD"T"HH24:MI:SSZ')

给出:

2018-11-01T15:21:24Z

demo:db<>fiddle

Postgres date formatting

关于sql - Postgresql to_char 添加字符到日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142068/

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