文章目录

  • ​​一、把日期转换为字符串​​
  • ​​二、把字符串转换日期​​
  • ​​三、日期运算​​
  • ​​1、直接加减​​
  • ​​2、add_months函数​​
  • ​​3、last_day函数​​
  • ​​4、其它的日期函数​​
  • ​​四、日期环境变量​​
  • ​​五、版权声明​​

Oracle采用date类型表示日期时间,这是一个7字节的固定宽度的数据类型,有7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。本文中把date类型称为日期时间类型,简称日期。

对编程语言来说,日期是用字符串来显示和书写的,如果设置了NLS_DATE_FORMAT环境变量,Oracle可以自动的对日期和字符串进行转换,但是,程序员更多的是采用to_char和to_date两个函数对日期和字符串进行转换。

一、把日期转换为字符串

to_char函数把日期转换成字符串,一般用于 select 和 from 之间的字段列表中的日期输出,语法如下:

to_char(日期,格式)

日期格式用字符串来表达,格式控制标识如下,加粗显示的是常用的格式:

d:一周中的星期几。

day:天的名字,使用空格填充到9个字符。

dd:月中的第几天。

ddd:年中的第几天。

dy:天的简写名。

iw:ISO标准的年中的第几周。

iyyy:ISO标准的四位年份。

yyyy:四位年份。

yyy,yy,y:年份的最后三位,两位,一位。

hh:小时,按12小时计。

hh24:小时,按24小时计。

mi:分。

ss:秒。

mm:月。

mon:月份的简写。

month:月份的全名。

w:该月的第几个星期。

ww:年中的第几个星期。

举例:

Oracle日期操作函数_字符串转换


Oracle日期操作函数_字符串转换_02

Oracle日期操作函数_字符串转换_03

Oracle日期操作函数_环境变量_04

Oracle日期操作函数_环境变量_05

二、把字符串转换日期

to_date函数把字符串转换成日期,一般用于insert、update和where之后的条件中的日期输入,语法如下:

to_date(字符串表示的日期,格式)

日期格式用字符串来表达,与to_char函数相同。

先创建一个用于测试的表tt。

create table tt ( c1 date);

举列:

Oracle日期操作函数_环境变量_06


Oracle日期操作函数_字符串_07

Oracle日期操作函数_字符串转换_08


Oracle日期操作函数_字符串_09

在update语句中把字符串转换为日期。

Oracle日期操作函数_环境变量_10

在where条件中把字符串转换为日期。

Oracle日期操作函数_字符串_11

三、日期运算

Oracle数据库提供了多种对日期加减的计算方法。

为了方便日期的显示,先设置好NLS_DATE_FORMAT环境变量,这个环境变量的用法在本文的“四、日期环境变量”章节中介绍。

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

1、直接加减

可以在日期上进行加减一个小数(单位是天)得到一个新的时间。

1)取当前时间和一天后的时间。

Oracle日期操作函数_环境变量_12

2)取当前时间和一小时后的时间。

Oracle日期操作函数_环境变量_13

3)获取当前时间和一秒后的时间。

Oracle日期操作函数_字符串转换_14

2、add_months函数

对日期直接加减的方式不用于月的加减,因为每月的天数不一样,例如2020-01-01,加上30天之后是2020-01-31,不是2020-02-01。如果希望把日期加上一个完整的月(不论月的大小),可以用add_months函数。

Oracle日期操作函数_环境变量_15

Oracle日期操作函数_字符串_16

Oracle日期操作函数_字符串_17

Oracle日期操作函数_字符串转换_18

Oracle日期操作函数_字符串转换_19

从上面的例子可以看出,月有大有小:1)如果下月的天小于本月的天,add_months后取下月的最后一天;2)本月的最后一天加上一个月,就是下个月的最后一天。

3、last_day函数

last_day函数得到日期所属月份最后一天的时间。

Oracle日期操作函数_字符串_20

4、其它的日期函数

Oracle还提供了其它的日期计算的函数,如months_between、next_day、​​numtodsinterval和numtoyminterval​​等,在我看来,这些函数很烦人,实在没有意义,就不介绍了。

四、日期环境变量

NLS_DATE_FORMAT环境变量指定日期的输入和输入格式,如果字符串的格式与NLS_DATE_FORMAT指定的格式相同,Oracle可以自动转换,不需要to_char和to_date函数。

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"

Oracle日期操作函数_字符串转换_21

export NLS_DATE_FORMAT="yyyymmddhh24miss"

Oracle日期操作函数_环境变量_22

从上图的运行结果看出,修改NLS_DATE_FORMAT环境变量后,如果输入的日期格式不符,Oracle无法识别。

五、版权声明


作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!