数据库 ·

Oracle日期处理

TO_CHAR

to_char函数的功能是将数值型或者日期型转化为字符型,这里仅涉及其后者功能。

官方描述:

TO_CHAR (datetime) converts a datetime or interval value of DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, or TIMESTAMP WITH LOCAL TIME ZONE datatype to a value of VARCHAR2 datatype in the format specified by the date format fmt.

TO_CHAR (datetime)

语法

    to_char(date,'YYYY/MM/DD') 

示例

    select  to_char(sysdate, 'YYYY/MM/DD' )  FROM  DUAL;

结果

2019/04/11

日期常用格式

格式不区分大小写,分割线可自行定义,这里使用“/”为例:

日期格式 说明
YYYY/MM/DD 年/月/日
YYYY/MM 年/月
MM 月份
DD 日期
D 从星期日算起,一星期中的第n天。即星期日 = 1; 星期一 = 2; 星期二 = 3;星期三 = 4; 星期四 = 5; 星期五 = 6; 星期六 = 7;
DDD 一年中的第n天
WW 一年中的第n周
W 一个月中的第n周
Q 一年中的第n季度
YYYY/MM/DD HH24:MI:SS 年/月/日 時(24小時制):分:秒
YYYY/MM/DD HH:MI:SS 年/月/日 時(非24小時制):分:秒

TO_DATE

Oracle TO_DATE 函数将字符串或表达式转换为日期值。

官方描述:

TO_DATE converts char of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype to a value of DATE datatype. The fmt is a datetime model format specifying the format of char. If you omit fmt, then char must be in the default date format. If fmt is J, for Julian, then char must be an integer.

TO_DATE

TRUNC

TRUNC(date)函数返回date当天的时间部分被格式模型fmt截断到指定的单位

返回的值始终为数据类型DATE,即使您为该date指定了不同的datetime数据类型。如果省略fmt,则date截断到最近的一天。

官方描述:

The TRUNC (date) function returns date with the time portion of the day truncated to the unit specified by the format model fmt. The value returned is always of datatype DATE, even if you specify a different datetime datatype for date. If you omit fmt, then date is truncated to the nearest day.

TRUNC (date)

示例

select trunc(sysdate)         from dual  --2019-04-11 00:00:00  今天的日期为2019-04-11
select trunc(sysdate, 'mm')   from dual  --2019-04-01 00:00:00  返回当月第一天.
select trunc(sysdate,'yy')    from dual  --2019-01-01 00:00:00  返回当年第一天
select trunc(sysdate,'dd')    from dual  --2019-04-11 00:00:00  返回当前年月日
select trunc(sysdate,'yyyy')  from dual  --2019-01-01 00:00:00  返回当年第一天
select trunc(sysdate,'d')     from dual  --2019-04-07 00:00:00  返回当前星期的第一天 (星期天为星期的第一天)
select trunc(sysdate, 'hh')   from dual  --2019-04-11 19:00:00  当前时间为19:20 
select trunc(sysdate, 'mi')   from dual  --2019-04-11 19:16:00  精确到分钟,TRUNC()函数没有秒的精度

EXTRACT

EXTRACT从日期时间或间隔值表达式中提取并返回指定日期时间字段的值。

官方描述:

EXTRACT extracts and returns the value of a specified datetime field from a datetime or interval value expression. When you extract a TIMEZONE_REGION or TIMEZONE_ABBR (abbreviation), the value returned is a string containing the appropriate time zone name or abbreviation. When you extract any of the other values, the value returned is in the Gregorian calendar. When extracting from a datetime with a time zone value, the value returned is in UTC. For a listing of time zone names and their corresponding abbreviations, query the V$TIMEZONE_NAMES dynamic performance view.

EXTRACT (datetime)

    extract(expression   from   date) 

示例

    select extract(year from sysdate) FROM  DUAL;

结果

2019

条件expression说明

expression 说明
year 年度
month 月份
day 日期

参考

Oracle Database Online Documentation10g Release 2 (10.2)

ORACLE时间字段取年、月、日、季度

oracle时间函数(包括截取时间)

Oracle 查询时间在当天的数据

参与评论