gpt4 book ai didi

sql - 使用postgresql格式化时间戳和数字的两个问题

转载 作者:行者123 更新时间:2023-11-29 14:10:40 36 4
gpt4 key购买 nike

我正在选择格式为“YYYY-MM-DD”的日期列。

我想将它转换为时间戳,使其成为“YYYY-MM-DD HH:MM:SS:MS”

我尝试过:

select CAST(mycolumn as timestamp) from mytable;

但这导致格式为 YYYY-MM-DD HH:MM:SS

我也试过

select TO_TIMESTAMP(mycolumn,YYYY-MM-DD HH:MM:SS:MS) from mytable;

但这也不起作用。我似乎无法弄清楚格式化它的正确方法。请注意,我只需要毫秒的第一位数字。

//////////////第二个问题

我也在尝试选择数字数据,这样就不会有任何尾随零。

例如,如果我在表中有 1、2.00、3.34、4.50 等值。

我希望能够将这些值选择为 1、2、3.34、4.5。

我尝试使用::float,但偶尔会有奇怪的输出。我也试过四舍五入功能,但不知道我需要多少个小数点,我怎么能正确使用它呢?

感谢您的帮助!

最佳答案

不幸的是,函数to_timestamp()to_char() 似乎并不完美。如果找不到更好的方法,请使用这些解决方法:

with example_data(d) as (
values ('2016-02-02')
)
select d, d::timestamp || '.0' tstamp
from example_data;

d | tstamp
------------+-----------------------
2016-02-02 | 2016-02-02 00:00:00.0
(1 row)

create function my_to_char(numeric)
returns text language sql as $$
select case
when strpos($1::text, '.') = 0 then $1::text
else rtrim($1::text, '.0')
end
$$;

with example_data(n) as (
values (100), (2.00), (3.34), (4.50))
select n::text, my_to_char(n)
from example_data;

n | my_to_char
------+------------
100 | 100
2.00 | 2
3.34 | 3.34
4.50 | 4.5
(4 rows)

另请参阅:How to remove the dot in to_char if the number is an integer

关于sql - 使用postgresql格式化时间戳和数字的两个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225868/

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