我正在将带有时区的时间戳转换为ISO格式:
select to_char('2020-01-01T20:20:03.000000000Z'::timestamptz, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"');
字符串
在这种情况下,微秒都是零。如果时间戳中没有微秒,我如何在格式中指定不显示这些和前导.
?
或者有没有更好的方法完全用ISO格式的时区来格式化时间戳?
我正在将带有时区的时间戳转换为ISO格式:
select to_char('2020-01-01T20:20:03.000000000Z'::timestamptz, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"');
字符串
在这种情况下,微秒都是零。如果时间戳中没有微秒,我如何在格式中指定不显示这些和前导.
?
或者有没有更好的方法完全用ISO格式的时区来格式化时间戳?
1条答案
按热度按时间1u4esq0p1#
to_char
函数需要一个格式参数,但是你所要求的需要一个不同的,取决于微秒的值。所以你不能直接这样做。但是,你可以使用case
来选择合适的格式。这可以在case
中作为第二个参数来完成。所以:(假设列ts
)字符串
与将
case
作为to_char
中的参数相比,在case
中使用to_char
似乎更直接,更容易阅读:型
请参阅demo here。另请参阅extract()函数的文档。