use*_*415 2 sql postgresql jdbc
我想选择以下格式的日期:2018-11-25T16:00:00Z
所以我试图做到这一点:
select to_char(registration_date, 'YYYY-MM-DDTHH24:MI:SSZ')
from ...
Run Code Online (Sandbox Code Playgroud)
但其输出为:
2018-11-01STH24:17:35Z
Run Code Online (Sandbox Code Playgroud)
字符“ T”更改日期输出,而不是仅在中间打印日期。我试图在char'T'旁边添加空格,如下所示:
选择to_char(registration_date,'YYYY-MM-DDT HH24:MI:SSZ')
它有效,但是我需要没有空格的日期。
如何将char'T'添加到日期中间,输出将与第一个示例相同?
是的,那真的很有趣。我可以复制它:
SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DDTHH24:MI:SSZ')
Run Code Online (Sandbox Code Playgroud)
给
2018-11-01STH24:21:24Z -- note the S
Run Code Online (Sandbox Code Playgroud)
和
SELECT to_char('2018-11-04 15:21:24'::timestamp, 'YYYY-MM-DDTHH24:MI:SSZ')
Run Code Online (Sandbox Code Playgroud)
给
2018-11-04THH24:21:24Z -- note that THH still seems to remain as in the format string
Run Code Online (Sandbox Code Playgroud)
这里的问题是格式值TH。该字符串被解释为“序数后缀”。它为“第一”,“第二”,“第三”,“第四”等添加后缀“ ST”,“ ND”,“ RD”和“ TH”。在您的格式字符串中,这是与T和格式字符串组合在一起的HH24。
看到:
SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DDTH')
Run Code Online (Sandbox Code Playgroud)
给
2018-11-01ST
Run Code Online (Sandbox Code Playgroud)
和
SELECT to_char('2018-11-04 15:21:24'::timestamp, 'YYYY-MM-DDTH')
Run Code Online (Sandbox Code Playgroud)
给
2018-11-04TH
Run Code Online (Sandbox Code Playgroud)
因此,实际上您的上述示例可以得到解释。的S是在现实ST中,H24是对未解释其余部分THH24(其中TH已经采取了有序后缀)。与第二个示例相同,在该示例中再次TH转换了TH,因此似乎被忽略了。
您的解决方案是将T放在双引号中:
SELECT to_char('2018-11-01 15:21:24'::timestamp, 'YYYY-MM-DD"T"HH24:MI:SSZ')
Run Code Online (Sandbox Code Playgroud)
这使:
2018-11-01T15:21:24Z
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |