格式化日期指的是将日期转为字符串,或将字符串转为日期,下面几个函数可以用来格式化日期
TO_CHAR(datetime, 'format')
TO_DATE(character, 'format')
TO_TIMESTAMP(character, 'format')
TO_TIMESTAMP_TZ(character, 'format')
SQL 产生的结果
SELECT TO_CHAR(current_timestamp, 'format') FROM DUAL;
Format |
List item |
YYYY-MM-DD |
2015-06-15 |
YYYY-MON-DD |
2015-JUN-15 |
YYYY-MM-DD HH24:MI:SS FF3 |
2015-06-15 13:18:10 700 |
YYYY-MM-DD HH24:MI:SS FF3 TZR |
2015-06-15 13:18:10 700 +08:00 |
DS |
6/15/2015 |
DL |
Monday, June 15, 2015 |
TS |
1:18:10 PM |
Oracle 支持哪些格式呢?看看下面的表格吧
Format |
Description |
Y |
年的最后一位数字,如:5 |
YY |
年的最后两位数字,如:15 |
YYY |
年的最后三位数字,如:015 |
YYYY |
年,如:2015 |
Y,YYY |
年用逗号分割 |
SYYYY |
年 |
YEAR |
年拼写,如:TWENTY FIFTEEN |
SYEAR |
年拼写,如:TWENTY FIFTEEN |
I |
ISO年的最后一位数字,如:5 |
IY |
ISO年的最后两位数字,如:15 |
IYY |
ISO年的最后三位数字,如:015 |
IYYY |
ISO年,如:2015 |
RR |
|
两位数字年,如:15 |
|
RRRR |
|
四位数字年,如:2015 |
|
|
|
MM |
Month (01-12) |
MON |
月份简称,如:JUN |
MONTH |
月份全称,如:JUNE |
RM |
罗马数字月份 |
|
|
D |
Day of week (1-7) |
DD |
Day of month (1-31) |
DDD |
Day of year (1-366) |
|
|
HH |
Hour of day (1-12) |
HH12 |
Hour of day (1-12) |
HH24 |
Hour of day (0-23) |
MI |
Minute (0-59) |
SS |
Second (0-59) |
SSSSS |
Seconds past midnight |
FF [1…9] |
毫秒 |
|
|
DS |
日期简称,如:6/12/2015 |
DL |
日期全称,如:Friday, June 12, 2015 |
TS |
时间简称,如:5:18:03 PM |
|
|
CC |
世纪,如:21 |
SCC |
世纪,如:21 |
Q |
Quarter of year (1, 2, 3, 4) |
W |
Week of month (1-5) |
WW |
Week of year (1-53) |
IW |
ISO Week of year (1-52 or 1-53) |
DY |
星期简称,如:Fri |
DAY |
星期全称,如:Friday |
|
|
AM |
. |
PM |
. |
AD |
. |
BC |
. |
TZD |
夏令时 |
TZR |
时区 |
TZH |
时区之时差 |
TZM |
时区之分钟差 |
EE |
era 全称 |
E |
era 简称 |
J |
The number of days since January 1, 4712 BC |
FM |
去掉首尾空格 |
FX |
精确匹配 |
X |
秒和毫秒分隔符 |
TH |
DDTH --> 4th |
SP |
DDSP -->FOUR |
SPTH |
DDSPTH --> FOURTH |
THSP |
DDTHSP --> FOURTH |
默认情况下,Oracle 格式化日期时,有一定的容错性,如下面的 SQL 返回正确的结果。
select to_date('20150612', 'YYYY/MM/DD') from dualselect to_date('2015#06#12', 'YYYY/MM/DD') from dual
如果你想精确匹配,你可以加上 FX修饰符,如:
select to_date('2015/06/12', 'FXYYYY/MM/DD') from dual
原文地址:原文地址