日期/时间转换模板模式

Netezza Performance ServerSQL 可识别输出模板中的某些模式,并将其替换为适当格式化的数据。

表 1. 日期/时间转换的模板模式
模式 描述 示例
HHHH12 小时 (01-12)。 to_char(timestamp '2015-02-14 20:19:07','HH') 返回: '08'
HH24 时间 (00-23)。 to_char(timestamp '2015-02-14 20:19:07', 'HH24') 返回: '20'
MI 分钟 (00-59)。 to_char(timestamp '2015-02-14 20:19:07','MI') 返回: '19'
SS 第二(00-59)。 to_char(timestamp '2015-02-14 20:19:07','SS') 返回: '07'
SSSS 午夜过去秒数 (0-86399)。 to_char(timestamp '2015-02-14 20:19:07', 'SSSS') 返回: '73147'
MS 四舍五入后的毫秒数00-00.999)。 to_char(timestamp '2015-02-14 20:19:07.123456789', 'MS') 返回: '123'
US 四舍五入后的微秒数00-00.999999)。 to_char(timestamp '2015-02-14 20:19:07.123456789', 'US') 返回: '123457'
A.M.  P.M.
a.m.  p.m.
AM    PM
am    pm
子午线指示器(大写或小写,带或不带句号)。 模板指定的子午线指标将在输出中调整为与小时相对应(0-12 小时为上午,12-23 小时为下午)。 输出时使用模板指定的子午线指示符格式(大写或小写,带或不带句号)。 to_char(timestamp '2015-02-14 20:19:07', 'HH:MI:SS am') 返回: '08:19:07 pm'
Y,YYY 年份(4 位或更多数字),用逗号隔开。 to_char(date '2016-02-14','Y,YYY') 返回: '2,016'
YYYY 年份(4 位及以上数字)。 to_char(date '2016-02-14','YYYY') 返回: '2016'
YYY 年份的最后 3 个数字。 to_char(date '2016-02-14','YYY') 返回: '016'
YY 年份的最后两位数。 to_char(date '2016-02-14','YY') 返回: '16'
Y 今年的最后一位数。 to_char(date '2016-02-14','Y') 返回: '6'
IYYY ISO 年份(4 位及以上数字)。 to_char(date '2016-01-01','IYYY') 返回: '2015'
IYY ISO 年的最后 3 位数字。 to_char(date '2016-02-14','IYY') 返回: '015'
IY ISO 年的最后两位数。 to_char(date '2016-02-14','IY') 返回: '15'
I 国际标准化组织年份的最后几位数。 to_char(date '2016-02-14','I') 返回: '5'
B.C.  A.D.
b.c.  a.d.
BC    AD
bc    ad
年代指示符(大写或小写,有无句号)。 输出时使用模板指定的年代指标格式(大写或小写,带或不带句号)。 to_char(date '2016-02-14','YYYY B.C.') 返回: '2016 A.D.'
MONTH 全大写月份名称,尾部空格不超过 9 个字符。 to_char(date '2016-02-14','MONTH') 返回: 'FEBRUARY '
Month 混合大小写的全月名,以 9 个字符为限。 to_char(date '2016-03-14','Month') 返回: 'March '
month 全小写月份名称,尾部空格为 9 个字符。 to_char(date '2016-04-14','month') 返回: 'april '
MON 大写月名缩写(3 个字符)。 to_char(date '2016-02-14','MON') 返回: 'FEB'
Mon 混合大小写月份名称缩写(3 个字符)。 to_char(date '2016-03-14','Mon') 返回: 'Mar'
mon 小写月份名称缩写(3 个字符)。 to_char(date '2016-04-14','mon') 返回: 'apr'
MM 月份编号(01-12)。 to_char(date '2016-04-14','MM') 返回: '04'
DAY 全大写日名,尾部空格不超过 9 个字符。 to_char(date '2016-02-15','DAY') 返回: 'MONDAY '
Day 混合大小写日名,尾部空格不超过 9 个字符。 to_char(date '2016-02-16','Day') 返回: 'Tuesday '
day 全小写日名,尾部空格不超过 9 个字符。 to_char(date '2016-02-17','day') 返回: 'wednesday'
DY 缩写大写日名(3 个字符)。 to_char(date '2016-02-15','DY') 返回: 'MON'
Dy 混合大小写日名缩写(3 个字符)。 to_char(date '2016-02-16','Dy') 返回: 'Tue'
dy 小写日名缩写(3 个字符)。 to_char(date '2016-02-17','dy') 返回: 'wed'
DDD 年月日 (001-366)。 to_char(date '2016-02-17','DDD') 返回: '048'
DD 月份(01-31)。 to_char(date '2016-02-17','DD') 返回: '17'
D 星期几(1-7;Sunday=1)。 to_char(date '2016-02-17','D') 返回: '4'
W 每月的周(1-5),其中第一周从每月的第一天开始。 to_char(date '2016-02-17','W') 返回: '3'
WW 年的周数(01-53),其中第一周从年的第一天开始。 to_char(date '2016-02-17','WW') 返回: '07'
IW ISO 年的周数。 新年的第一个星期四是第 1 周。 to_char(date '2016-01-01','IW') 返回: '53'
CC 世纪(2 位数)。 to_char(date '2016-02-17','CC') 返回: '21'
J 儒略日,即自公元前 4714 年 11 月 24 日以来的天数。 to_char(date '2016-02-17','J') 返回: '2457389'
Q 季度 to_char(date '2016-02-17','J') 返回: '1'
RM 月份用大写罗马数字表示(I-XII;I=1 月),尾部空格不超过 4 个字符。 to_char(date '2016-04-11','RM') 返回: 'IV '
rm 月份用小写罗马数字表示(i-i-xii;i=1 月),尾部空格为 4 个字符。 to_char(date '2016-10-11','RM') 返回: 'X '
用法说明:
  • 模板中的空格会反映在输出中。 例如,"to_char(timestamp '2015-02-14 20:19:07','HH MI SS')返回 "'08 19 07'
  • 要输出文本,请将其放在双引号内。 例如,"to_char(date '2016-04-02','"Year: "YYYY')返回 "'Year: 2016'
  • 要输出双引号,请在双引号前加上反斜杠。 例如,"to_char(date '2015-02-14','\"YYYY\" \"FMMonth\"')返回 "'"2015" "February"'
您可以对任何模板模式应用以下修改器来改变其行为。
表 2. 模板修改器
修饰符 描述
FM 抑制前导零和尾部空白,否则会增加输出固定宽度。 例如:

to_char(date '2016-03-14','FMMonth') 返回: 'March'

FM前缀抑制了 "March "后通常会出现的四个尾部空白。

FX 强制输入字符串至少包含模板中指定的空白:
  • 未指定 FX 前缀时,输入字符串可以包含与模板相同数量、更多或更少的空白。 例如:
    • to_date('31 Dec 2015','DD Mon YYYY') 返回: 2015-12-31
    • to_date('31 Dec 2015','DD Mon YYYY') 返回: 2015-12-31
    • to_date('31 Dec 2015','DD Mon YYYY') 返回: 2015-12-31
  • 如果指定了 FX 前缀,输入字符串可以包含与模板相同或更多的空白,但不能少于模板。 例如:
    • to_date('31 Dec 2015','FXDD Mon YYYY') 返回: 2015-12-31
    • to_date('31 Dec 2015','FXDD Mon YYYY') 返回: 2015-12-31
    • to_date('31 Dec 2015','FXDD Mon YYYY') 返回: ERROR: Invalid Date.
当存储过程需要在处理字符输入前验证其格式是否正确时,这一点很有帮助。
TH 添加适当的大写序号后缀(ST、ND、RD 或 TH)。 例如:

to_char(date '2016-04-01','FMDDTH') 返回: '1ST'

th 添加适当的小写序号后缀(st、nd、rd 或 th)。 例如:

to_char(date '2016-04-02','FMDDth') 返回: '2nd'

下表描述了数字转换的模板模式。
表 3. 数字转换的模板模式
模式 描述 示例
9 表示数字的位置。 如果模板中的每个 9 都与输出中的数字不对应,则输出中将包含一个空格。
to_char(-125,'999')返回 "'-125'","
"返回 "to_char(-125,'99999')","'  -125'"返回 "
","to_char(125,'999')返回 "' 125'
0 表示前导零的位置。 to_char(-125,'00999') 返回: '-00125'
. 句号表示小数点的位置。 to_char(-125,'999.999') 返回: '-125.000'
, 逗号表示组(千)分隔符的位置。 使用哪种分隔符取决于您的本地语言。  
PR 该后缀会使负值显示在角括号中。 不影响正值。 to_char(-485,'999PR') 返回: '<485>'
S 该前缀或后缀在相应位置上放置一个加号 (+) 或减号 (-)。 to_char(485,'S999') 返回: '+485'
L 货币符号。 使用哪个符号取决于您所在的地区。  
D 小数分隔符。 使用哪种分隔符取决于您的本地语言。 to_char(-125,'999D99') 返回: '-125.00'
G 组分隔符(使用本地语言)。 to_char(-3125,'9G999D9') 返回: '-3125.0'
MI 这个前缀或后缀:
  • 如果是负数,则在相应位置加上减号 (-)。
  • 如果是正数,则在相应位置放置空白。
使用 MI 模式格式化的符号不是数字中的锚点,例如
  • to_char(-12,'S9999') 返回 "' -12'"。
  • to_char(-12,'MI9999')返回 "'- 12'"。
to_char(-485,'MI999')返回 "'-485'""
"to_char(-485,'999MI')返回 "'485-'""
""to_char(485,'MI999') "返回 "'  485'""
"to_char(485,'999MI') 返回 "' 485 '
RN 罗马数字(输入 1 - 3999)。 罗马数字忽略十进制分数。 to_char(5.2,'RN') 返回: 'V'
V 在 V 的右边每移动一个 9,输出就移动 10 的一个幂。 对于 to_char 函数,模板不能同时包含 V 型和小数点。 例如,不允许使用 "99.9V99或 "99D9V99
to_char(12.4,'99V999')返回 "' 12400'""
""to_char(12.45,'99V9')返回 "' 125'