NZSQL/Code-如何将NZSQL设置为不舍入到最接近的整数

NZSQL/Code-如何将NZSQL设置为不舍入到最接近的整数,sql,netezza,Sql,Netezza,各位 我正在NZSQL中使用一些函数,发现NZSQL正在舍入到最接近的整数,不确定这是函数的设计,还是舍入可以禁用 我正在使用的函数之一是 TO_编号(年龄(a列),'000') 它四舍五入到最接近的数字,但我想让它保持在小数点。大约12.42。这可能吗?我应该使用不同的函数吗?我试过使用'00.000),但它仍然循环 提前谢谢 年龄函数返回一个间隔,当与TO_NUMBER的格式模板配对时,该间隔可能不会像您期望的那样工作。模板的形状有一个特定的含义,与您可能直觉的含义不同 例如,这里有一个格式

各位

我正在NZSQL中使用一些函数,发现NZSQL正在舍入到最接近的整数,不确定这是函数的设计,还是舍入可以禁用

我正在使用的函数之一是

TO_编号(年龄(a列),'000')

它四舍五入到最接近的数字,但我想让它保持在小数点。大约12.42。这可能吗?我应该使用不同的函数吗?我试过使用'00.000),但它仍然循环


提前谢谢

年龄函数返回一个间隔,当与TO_NUMBER的格式模板配对时,该间隔可能不会像您期望的那样工作。模板的形状有一个特定的含义,与您可能直觉的含义不同

例如,这里有一个格式模板,对应于数值(20,6)

在这里,您可以看到TO_编号结果中以数字表示的间隔。前两位代表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_编号模板的格式所做的事情与您可能期望的不同

相反,您可能想要的(如果我从您的评论中得到正确的要点)是这样的,它使用DATE_部分作为DATEDIFF的松散替代:

SYSTEM.ADMIN(ADMIN)=> select date_part('day',now() - '01/01/1960'::date) / 365.242;
  ?COLUMN?
------------
 54.9580826
(1 row)

AGE函数返回一个间隔,这可能是混淆的一部分。你能给出列a的样本值以及你希望从中得到的结果吗?列a有出生日期,所以可能是1960年1月1日。在TSQL中,我能够使用(DATEDIFF(dd,dateofbirth,getdate())/365.242),然后返回类似23.24的值。在这种情况下,输出的小数/小数部分代表什么?23.30=23y 4m我觉得哇,这太神奇了!非常感谢您的解释。你是对的,最后的解决方案正是我想要的。我认为Netezza有很大的潜力,但是有限的资源使得它很难开始使用。再次感谢您抽出时间分享您的知识!非常感谢。
SYSTEM.ADMIN(ADMIN)=> select date_part('day',now() - '01/01/1960'::date) / 365.242;
  ?COLUMN?
------------
 54.9580826
(1 row)