Oracle函数
日期函数
获取日期
-
获取当前日期
SELECT SYSDATE FROM DUAL;-- 2022-05-18 11:39:26 SELECT SYSDATE, ADD_MONTHS(SYSDATE, 1) FROM DUAL; -- 2022-05-18 11:39:26,2022-06-18 11:39:2 SELECT last_day(SYSDATE) FROM DUAL;-- 2022-05-31 11:41:16 SELECT MONTHS_BETWEEN(TO_DATE('2022-05-18','yyyy-MM-dd'), TO_DATE('2022-02-12','yyyy-MM-dd')) FROM DUAL; -- 3.19354838709677419354838709677419354839
几种时间函数
**注意:**这里的会话时区,如果你的jdbc连接没有设置时区,那么会话时区默认是utc的,所以不能用这个函数作为插入值使用。
序号 函数名 说明 1 DBTIMEZONE 数据库时区 2 SESSIONTIMEZONE 会话时区 3 CURRENT_DATE 当前会话时间 4 CURRENT_TIMESTAMP 当前会话时间戳 (带时区) 5 SYSDATE 系统时间/系统时间 6 LOCALTIMESTAMP 系统时间戳/系统时间戳 7 SYSTIMESTAMP 系统时间戳/系统时间戳(带时区) -- 查询系统时区和session时区 SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL; -- 设置session时区 ALTER SESSION SET TIME_ZONE='Asia/Shanghai'; -- 设置数据库时区 ALTER DATABASE SET TIME_ZONE ='+08:00';
-
ROUND()
-- 给出日期按期间(参数2)四舍五入后的期间的第一天日期 SELECT ROUND(SYSDATE) FROM DUAL; -- 最近0点日期 SELECT ROUND(SYSDATE,'day') FROM DUAL; -- 最近星期日 SELECT ROUND(SYSDATE,'month') FROM DUAL; -- 最近月初 SELECT ROUND(SYSDATE,'q') FROM DUAL; -- 最近季初日期 SELECT ROUND(SYSDATE,'year') FROM DUAL; -- 最近年初日期
-
trunc()
-- 返回日期所在期间的第一天日期 SELECT trunc(SYSDATE) FROM DUAL; -- 最近0点日期 SELECT trunc(SYSDATE,'day') FROM DUAL; -- 最近星期日 SELECT trunc(SYSDATE,'month') FROM DUAL; -- 最近月初 SELECT trunc(SYSDATE,'q') FROM DUAL; -- 最近季初日期 SELECT trunc(SYSDATE,'year') FROM DUAL; -- 最近年初日期
-
next_day
SELECT next_day(SYSDATE,'星期一') FROM DUAL;--下周星期一 SELECT next_day(SYSDATE,'星期二') FROM DUAL;--下周星期二 SELECT next_day(SYSDATE,'星期三') FROM DUAL;--下周星期三 SELECT next_day(SYSDATE,'星期四') FROM DUAL;--下周星期四 SELECT next_day(SYSDATE,'星期五') FROM DUAL;--下周星期五 SELECT next_day(SYSDATE,'星期六') FROM DUAL;--下周星期六 SELECT next_day(SYSDATE,'星期日') FROM DUAL;--下周星期日
-
2
提取日期
extract
SELECT extract(hour from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 小时,
SELECT extract(minute from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 分钟,
SELECT extract(second from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 秒,
SELECT extract(DAY from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 日,
SELECT extract(MONTH from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 月,
SELECT extract(YEAR from timestamp '2001-2-16 2:38:40 ' ) FROM DUAL; -- 年
SELECT extract(DAY from SYSDATE ) FROM DUAL;
SELECT extract(MONTH from SYSDATE ) FROM DUAL;
SELECT extract(YEAR from SYSDATE ) FROM DUAL;
日期计算
-
interval
-- 数值为负,减xx时间。 select trunc(sysdate)+(interval '1' second), --加1秒(1/24/60/60) trunc(sysdate)+(interval '1' minute), --加1分钟(1/24/60) trunc(sysdate)+(interval '1' hour), --加1小时(1/24) trunc(sysdate)+(INTERVAL '1' DAY), --加1天(1) trunc(sysdate)+(INTERVAL '1' MONTH), --加1月 trunc(sysdate)+(INTERVAL '1' YEAR), --加1年 trunc(sysdate)+(interval '01:02:03' hour to second), --加指定小时到秒 trunc(sysdate)+(interval '01:02' minute to second), --加指定分钟到秒 trunc(sysdate)+(interval '01:02' hour to minute), --加指定小时到分钟 trunc(sysdate)+(interval '2 01:02' day to minute) --加指定天数到分钟 from dual;
日期转换
转换函数
TO_CHAR(x[[,c2],C3])
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS =“dg”, NLS_CURRENCY=“string”
【说明1】x为数据型时
date/time 转换的模板(常用)
模板 | 描述 |
---|---|
HH | 一天的小时数 (01-12) |
HH12 | 一天的小时数 (01-12) |
HH24 | 一天的小时数 (00-23) |
MI | 分钟 (00-59) |
SS | 秒 (00-59) |
SSSS | 午夜后的秒 (0-86399) |
AM or A.M. or PM or P.M. | 正午标识(大写) |
am or a.m. or pm or p.m. | 正午标识(小写) |
Y,YYY | 带逗号的年(4 和更多位) |
YYYY | 年(4和更多位) |
YYY | 年的后三位 |
YY | 年的后两位 |
Y | 年的最后一位 |
BC or B.C. or AD or A.D. | 年标识(大写) |
bc or b.c. or ad or a.d. | 年标识(小写) |
MONTH | 全长大写月份名(9字符) |
Month | 全长混合大小写月份名(9字符) |
month | 全长小写月份名(9字符) |
MON | 大写缩写月份名(3字符) |
Mon | 缩写混合大小写月份名(3字符) |
mon | 小写缩写月份名(3字符) |
MM | 月份 (01-12) |
DAY | 全长大写日期名(9字符) |
Day | 全长混合大小写日期名(9字符) |
day | 全长小写日期名(9字符) |
DY | 缩写大写日期名(3字符) |
Dy | 缩写混合大小写日期名(3字符) |
dy | 缩写小写日期名(3字符) |
DDD | 一年里的日子(001-366) |
DD | 一个月里的日子(01-31) |
D | 一周里的日子(1-7;SUN=1) |
W | 一个月里的周数 |
WW | 一年里的周数 |
CC | 世纪(2 位) |
J | Julian 日期(自公元前4712年1月1日来的日期) |
Q | 季度 |
RM | 罗马数字的月份(I-XII;I=JAN)-大写 |
rm | 罗马数字的月份(I-XII;I=JAN)-小写 |
date/time 转换的模板(官方)
元素 | TO_* 日期时间函数? | 描述 |
---|---|---|
- / , . ; : "text" | 是的 | 标点符号和引用的文本在结果中重现。 |
AD A.D. | 是的 | 带或不带句点的 AD 指示器。 |
AM A.M. | 是的 | 带或不带句点的子午线指示器。 |
BC B.C. | 是的 | 带或不带句点的 BC 指标。 |
CC SCC | 世纪。如果 4 位数字年份的最后 2 位数字介于 01 和 99(含)之间,则该世纪比该年份的前 2 位数字大 1。如果 4 位数字年份的最后 2 位数字为 00,则世纪与该年份的前 2 位数字相同。例如,2002 返回 21;2000 返回 20。 | |
D | 是的 | 星期几 (1-7).此元素取决于会话的 NLS 区域。 |
DAY | 是的 | 日期的名称。 |
DD | 是的 | 一个月中的某一天 (1-31)。 |
DDD | 是的 | 一年中的一天 (1-366). |
DL | 是的 | 返回长日期格式的值,该格式是 Oracle 数据库格式的扩展,由参数的当前值确定。使日期组件(日名、月号等)的外观依赖于 和 参数。例如,在区域设置中,这等效于指定格式 。在区域设置中,它等效于指定格式 ’ '。DATE``NLS_DATE_FORMAT``NLS_TERRITORY``NLS_LANGUAGE``AMERICAN_AMERICA``'fmDay,``Month``dd,``yyyy'``GERMAN_GERMANY``fmDay, dd.``Month yyyy **限制:**只能使用元素指定此格式,以空格分隔。TS |
DS | 是的 | 返回短日期格式的值。使日期组件(日名、月号等)的外观依赖于 和 参数。例如,在区域设置中,这等效于指定格式“”。在区域设置中,它等效于指定格式 ‘’。NLS_TERRITORY``NLS_LANGUAGE``AMERICAN_AMERICA``MM/DD/RRRR``ENGLISH_UNITED_KINGDOM``DD/MM/RRRR **限制:**只能使用元素指定此格式,以空格分隔。TS |
DY | 是的 | 日期的缩写名称。 |
E | 是的 | 缩写的年号(日本帝国,中华民国官方和泰国佛历)。 |
EE | 是的 | 全名(日本帝国,中华民国官员和泰国佛历)。 |
FF [1..9] | 是的 | 秒的小数部分;不打印基数字符。使用 X 格式元素添加基数字符。使用 FF 后面的数字 1 到 9 指定返回的日期时间值的小数秒部分中的位数。如果未指定数字,则 Oracle 数据库将使用为日期时间数据类型或数据类型的默认精度指定的精度。在时间戳和间隔格式中有效,但在格式中无效。DATE 例子: 'HH:MI:SS.FF'``SELECT TO_CHAR(SYSTIMESTAMP, 'SS.FF3') from DUAL; |
FM | 是的 | 返回一个没有前导空格或尾随空格的值。参见:FM |
FX | 是的 | 要求字符数据和格式模型之间精确匹配。参见:外汇 |
HH HH12 | 是的 | 一天中的一小时 (1-12)。 |
HH24 | 是的 | 一天中的一小时 (0-23)。 |
IW | 日历周(1-52 或 1-53),由 ISO 8601 标准定义。日历周从星期一开始。一年中的第一个日历周包括 1 月 4 日。一年中的第一个日历周可能包括12月29日,30日和31日。一年中的最后一个日历周可能包括 1 月 1 日、2 日和 3 日。 | |
IYYY | 包含日历周的年份的 4 位数年份,如 ISO 8601 标准所定义。 | |
IYY IY I | 包含 ISO 8601 标准定义的日历周的年份的最后 3、2 或 1 位数字。 | |
J | 是的 | 儒略日;自公元前4712年1月1日以来的天数。用 J 指定的数字必须是整数。 |
MI | 是的 | 分钟 (0-59)。 |
MM | 是的 | 月份 (01-12;1 月 = 01)。 |
MON | 是的 | 月份的缩写名称。 |
MONTH | 是的 | 月份名称。 |
PM P.M. | 是的 | 带或不带句点的子午线指示器。 |
Q | 季度 (1, 2, 3, 4;1 月至 3 月 = 1)。 | |
RM | 是的 | 罗马数字月 (I-XII;1 月 = I)。 |
RR | 是的 | 允许您仅使用两位数字存储 21 世纪的 20 世纪日期。另请参见**:**“RR 日期时间格式元素” |
RRRR | 是的 | 全年无休。接受 4 位或 2 位输入。如果为 2 位数字,则提供与 RR 相同的回报。如果您不需要此功能,请输入 4 位数的年份。 |
SS | 是的 | 第二(0-59)。 |
SSSSS | 是的 | 午夜过后几秒钟 (0-86399)。 |
TS | 是的 | 返回短时间格式的值。使时间分量(小时、分钟等)的外观依赖于 和 初始化参数。NLS_TERRITORY``NLS_LANGUAGE **限制:**只能使用 or 元素指定此格式,以空格分隔。DL``DS |
TZD | 是的 | 夏令时信息。TZD 值是包含夏令时信息的缩写时区字符串。它必须与 TZR 中指定的区域相对应。在时间戳和间隔格式中有效,但在格式中无效。DATE 示例:(适用于美国/太平洋标准时间); (适用于美国/太平洋夏令时)。PST``PDT |
TZH | 是的 | 时区小时。(请参阅格式元素。在时间戳和间隔格式中有效,但在格式中无效。TZM``DATE 示例:.'HH:MI:SS.FFTZH:TZM' |
TZM | 是的 | 时区分钟。(请参阅格式元素。在时间戳和间隔格式中有效,但在格式中无效。TZH``DATE 示例:.'HH:MI:SS.FFTZH:TZM' |
TZR | 是的 | 时区区域信息。该值必须是数据库中支持的时区区域名称之一。在时间戳和间隔格式中有效,但在格式中无效。DATE **例:**美国/太平洋 |
WW | 一年中的第一周 (1-53),其中第 1 周从一年的第一天开始,一直持续到一年中的第七天。 | |
W | 月中的一周 (1-5),其中第 1 周从该月的第一天开始,到第七天结束。 | |
X | 是的 | 局部基数字符。示例:.'HH:MI:SSXFF' |
Y,YYY | 是的 | 此位置带有逗号的年份。 |
YEAR SYEAR | 年份,拼写出来; 前缀 BC 日期,并带有减号 (-)。S | |
YYYY SYYYY | 是的 | 4位数字年份; 用减号前缀 BC 日期。S |
YYY YY Y | 是的 | 年份的最后 3、2 或 1 位数字。 |
Oracle 数据库可以灵活地将字符串转换为日期。例如,当使用该函数时,包含标点符号字符的格式模型与缺少部分或全部这些字符的输入字符串匹配,前提是输入字符串中的每个数字元素都包含允许的最大位数,例如,两位数字“05”表示“MM”,四位数字“2007”表示“YYYY”。以下语句不返回错误:TO_DATE
SELECT TO_CHAR(TO_DATE('0207','MM/YY'), 'MM/YY') FROM DUAL;
TO_CH
-----
02/07
但是,以下格式字符串确实返回错误,因为 FX(格式精确)格式修饰符要求表达式和格式字符串完全匹配:
SELECT TO_CHAR(TO_DATE('0207', 'fxmm/yy'), 'mm/yy') FROM DUAL;
SELECT TO_CHAR(TO_DATE('0207', 'fxmm/yy'), 'mm/yy') FROM DUAL;
*
ERROR at line 1:
ORA-01861: literal does not match format string
允许任何非字母数字字符与格式模型中的标点符号字符匹配。例如,以下语句不返回错误:
SELECT TO_CHAR (TO_DATE('02#07','MM/YY'), 'MM/YY') FROM DUAL;
TO_CH
-----
02/07
所有模板都都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀 ‘FX
’ 只是一个全局修改器。
date/time to_char() 的前缀后缀
后缀 | 描述 | 例子 |
---|---|---|
FM | 填充模式前缀 | FMMonth |
TH | 大写顺序数后缀 | DDTH |
th | 小写顺序数后缀 | DDTH |
FX | 固定模式全局选项(见下面) | FX Month DD Day |
SP | 拼写模式(还未实现) | DDSP |
用法须知:
- 如果没有使用
FX
选项,to_timestamp
和to_date
忽略空白。FX
必须做为模板里的第一个条目声明。 - 反斜杠(“”)必须用做双反斜杠(“\”),例如 ‘\HH\MI\SS’。
- 双引号(‘"’)之间的字串被忽略并且不被分析。如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠(
'\\'),例如 '\\"YYYY Month\\"'
。 **to_char**
支持不带前导双引号(‘"’)的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:'"Hello Year: "YYYY'
)。
to_char(numeric
) 的模板(常用)
模板 | 描述 |
---|---|
9 | 带有指定位数的值 |
0 | 前导零的值 |
. (句点) | 小数点 |
, (逗号) | 分组(千)分隔符 |
PR | 尖括号内负值 |
S | 带负号的负值(使用本地化) |
L | 货币符号(使用本地化) |
D | 小数点(使用本地化) |
G | 分组分隔符(使用本地化) |
MI | 在指明的位置的负号(如果数字 < 0) |
PL | 在指明的位置的正号(如果数字 > 0) |
SG | 在指明的位置的正/负号 |
RN | 罗马数字(输入在 1 和 3999 之间) |
TH or th | 转换成序数 |
V | 移动 n 位(小数)(参阅注解) |
EEEE | 科学记数。现在不支持。 |
to_char(numeric
) 的模板(官方)
表 2-13 数字格式元素
元素 | 例 | 描述 |
---|---|---|
(逗号) | 9,999 | 返回指定位置的逗号。您可以在数字格式模型中指定多个逗号。**限制:**逗号元素不能开始数字格式模型。在数字格式模型中,逗号不能出现在十进制字符或句点的右侧。 |
.(句点) | 99.99 | 返回一个小数点,即指定位置的句点 (.)。**限制:**在数字格式模型中只能指定一个周期。 |
$ | $9999 | 返回带有前导美元符号的值。 |
0 | 0999``9990 | 返回前导零。返回尾随零。 |
9 | 9999 | 返回具有指定位数的值,如果为正,则前导空格;如果为负,则为前导减号。前导零为空,但零值除外,零值返回定点数的整数部分的零。 |
B | B9999 | 当定点数的整数部分为零时,返回该整数部分的空白(与格式模型中的零无关)。 |
C | C999 | 在指定位置返回 ISO 货币符号(参数的当前值)。NLS_ISO_CURRENCY |
D | 99D99 | 在指定位置返回十进制字符,该字符是参数的当前值。默认值为句点 (.)。NLS_NUMERIC_CHARACTER **限制:**在数字格式模型中只能指定一个小数字符。 |
断续器 | 9.9EEEE | 返回使用科学记数法的值。 |
G | 9G999 | 在指定位置返回组分隔符(参数的当前值)。您可以在数字格式模型中指定多个组分隔符。NLS_NUMERIC_CHARACTER **限制:**在数字格式模型中,组分隔符不能显示在小数点字符或句点的右侧。 |
L | L999 | 在指定位置返回本地货币符号(参数的当前值)。NLS_CURRENCY |
米 | 9999MI | 返回带有尾随减号 (-) 的负值。返回尾随空白的正值。**限制:**MI 格式元素只能出现在数字格式模型的最后一个位置。 |
公关 | 9999PR | 返回<角括号>中的负值。返回具有前导和尾随空白的正值。Restriction: The PR format element can appear only in the last position of a number format model. |
断续器rn | RN``rn | 返回大写罗马数字形式的值。以小写罗马数字的形式返回一个值。值可以是介于 1 和 3999 之间的整数。 |
S | S9999``9999S | 返回带有前导减号 (-) 的负值。返回带有前导加号 (+) 的正值。返回带有尾随减号 (-) 的负值。返回带有尾随加号 (+) 的正值。**限制:**S 格式元素只能出现在数字格式模型的第一个或最后一个位置。 |
断续器 | TM | 文本最小数字格式模型返回(以十进制输出)可能最少的字符数。此元素不区分大小写。默认值为 TM9,它以固定表示法返回数字,除非输出超过 64 个字符。如果输出超过 64 个字符,则 Oracle 数据库会自动返回科学记数法中的数字。**限制:**不能在此元素前面加上任何其他元素。您只能将此元素跟在一个 9 或一个 E(或 e)后面,但不能使用它们的任意组合。以下语句返回错误:SELECT TO_CHAR(1234, 'TM9e') FROM DUAL; |
U | U9999 | 在指定位置返回欧元(或其他)双货币符号,由参数的当前值确定。NLS_DUAL_CURRENCY |
V | 999V99 | 返回一个值乘以 10n(如有必要,请将其向上舍入),其中 .n``V |
X | XXXX``xxxx | 返回指定位数的十六进制值。如果指定的数字不是整数,则 Oracle 数据库会将其舍入为整数。**限制:**此元素仅接受正值或 0。负值返回错误。只能在此元素前面加上 0(返回前导零)或 FM。任何其他元素都会返回错误。如果既不指定 0 也不指定带有 X 的 FM,则返回值始终有一个前导空白。有关详细信息,请参阅格式模型修饰符 FM。 |
表 2-14 显示了以下查询的结果,用于和 的不同值:number``'fmt'
SELECT TO_CHAR(number, 'fmt') FROM DUAL;
表2-14 数字转换结果
数 | ‘fmt’ | 结果 |
---|---|---|
-1234567890 | 9999999999S | '1234567890-' |
0 | 99.99 | ' .00' |
+0.1 | 99.99 | ' .10' |
-0.2 | 99.99 | ' -.20' |
0 | 90.99 | ' 0.00' |
+0.1 | 90.99 | ' 0.10' |
-0.2 | 90.99 | ' -0.20' |
0 | 9999 | ' 0' |
1 | 9999 | ' 1' |
0 | B9999 | ' ' |
1 | B9999 | ' 1' |
0 | B90.99 | ' ' |
+123.456 | 999.999 | ' 123.456' |
-123.456 | 999.999 | '-123.456' |
+123.456 | FM999.009 | '123.456' |
+123.456 | 9.9EEEE | ' 1.2E+02' |
+1E+123 | 9.9EEEE | ' 1.0E+123' |
+123.456 | FM9.9EEEE | '1.2E+02' |
+123.45 | FM999.009 | '123.45' |
+123.0 | FM999.009 | '123.00' |
+123.45 | L999.99 | ' $123.45' |
+123.45 | FML999.99 | '$123.45' |
+1234567890 | 9999999999S | '1234567890+' |
to_date()
select to_date('202205','yyyymm'),
to_date('2022-05-18','yyyy.mm.dd'),
(date '2022-05-18'),
to_date('2022-05-18 17:48:57','yyyy-mm-dd hh24:mi:ss'),
(timestamp '2022-05-18 17:48:57')
from dual;
TO_NUMBER(X[[,c2],c3])
select TO_NUMBER('22333'),TO_NUMBER('22333.012') from dual;
convert字符集转换
SELECT CONVERT('strutz', 'US7ASCII', 'WE8ISO8859P1')FROM dual;
字符集 | 描述 |
---|---|
US7ASCII | 美国7位ASCII字符集 |
WE8DEC | 西欧8位字符集 |
WE8HP | 惠普西欧Laserjet 8位字符集 |
F7DEC | DEC法语7位字符集 |
WE8EBCDIC500 | IBM西欧EBCDIC代码第500页 |
WE8PC850 | IBM PC代码第850页 |
WE8ISO8859P1 | ISO 8859-1西欧8位字符集 |
字符串函数
函数 | 注释 |
---|---|
ASCII(X) | 返回字符X的ASCII码 |
CONCAT(X,Y) | 连接字符串X和Y |
INSTR(X,STR[,START][,N) | 从X中查找str,可以指定从start开始,也可以指定从n开始 |
LENGTH(X) | 返回X的长度 |
LOWER(X) | X转换成小写 |
UPPER(X) | X转换成大写 |
LTRIM(X[,TRIM_STR]) | 把X的左边截去trim_str字符串,缺省截去空格 |
RTRIM(X[,TRIM_STR]) | 把X的右边截去trim_str字符串,缺省截去空格 |
TRIM([TRIM_STR FROM]X) | 把X的两边截去trim_str字符串,缺省截去空格 |
REPLACE(X,old,new) | 在X中查找old,并替换成new |
SUBSTR(X,start[,length]) | 返回X的字串,从start处开始,截取length个字符,缺省length,默认到结尾 |
数值函数
函数 | 说明 | 演示 |
---|---|---|
ABS(X) | X的绝对值 | ABS(-3)=3 |
ACOS(X) | X的反余弦 | ACOS(1)=0 |
COS(X) | 余弦 | COS(1)=0.54030230586814 |
CEIL(X) | 大于或等于X的最小值 | CEIL(5.4)=6 |
FLOOR(X) | 小于或等于X的最大值 | FLOOR(5.8)=5 |
LOG(X,Y) | X为底Y的对数 | LOG(2,4)=2 |
MOD(X,Y) | X除以Y的余数 | MOD(8,3)=2 |
POWER(X,Y) | X的Y次幂 | POWER(2,3)=8 |
ROUND(X[,Y]) | X在第Y位四舍五入,默认y=0 | ROUND(3.456,2)=3.46 |
SQRT(X) | X的平方根 | SQRT(4)=2 |
TRUNC(X[,Y]) | X在第Y位截断,默认y=0 | TRUNC(3.456,2)=3.45 |