所有人。
我正在使用NZSQL中的一些函数,发现NZSQL舍入到最近的整数,并且不确定这是函数的设计,还是可以禁用舍入。
我使用的函数之一是
TO_NUMBER(年龄(Column_a),'000')
它会转到最近的数,但是我想让它保持在十进制数。大概是12.42。这个是可能的吗?我应该使用不同的功能吗?我试过用“00.000”,但它还在弹.
提前感谢!
发布于 2014-12-17 22:33:53
AGE函数返回一个间隔,当与TO_NUMBER的格式模板配对时,这个间隔可能不像您所期望的/希望的那样。模板的形状具有不同于直觉的特殊含义。
例如,这里有一个与数字(20,6)相对应的格式模板。
SYSTEM.ADMIN(ADMIN)=> select age('01/01/1960'::date) , to_number(age('01/01/1960'::date),'99999999999999999999.999999');
AGE | TO_NUMBER
-----------------------------------+---------------------
54 years 11 mons 15 days 23:17:21 | 541115231721.000000
(1 row)在这里,您可以在TO_NUMBER的结果中看到以数字表示的间隔。前两位代表54年,后两位代表11个月,小数点之前的最后两位代表21秒。请注意,小数点以上没有值,这是预期的(如果不是我们设计的话)。
如果我们从小数点的右边或左边从模板中取一个9,我们就会得到一个错误的响应。请注意,48秒被截断为仅4秒。
SYSTEM.ADMIN(ADMIN)=> select age('01/01/1960'::date) , to_number(age('01/01/1960'::date),'9999999999999999999.999999'), to_number(age('01/01/1960'::date),'99999999999999999999.99999');
AGE | TO_NUMBER | TO_NUMBER
-----------------------------------+--------------------+--------------------
54 years 11 mons 15 days 23:27:48 | 54111523274.000000 | 54111523274.000000
(1 row)这里的重点仅仅是强调TO_NUMBER模板的格式所做的事情,而不是您可能期望/想要的。
相反,您可能想要的(如果我从您的评论中得到正确的要点)是这样的,它使用DATE_PART作为DATEDIFF的松散替代品:
SYSTEM.ADMIN(ADMIN)=> select date_part('day',now() - '01/01/1960'::date) / 365.242;
?COLUMN?
------------
54.9580826
(1 row)https://stackoverflow.com/questions/27509443
复制相似问题